From 82a04a76c14eb58420b10ee8601f67f4512c7d40 Mon Sep 17 00:00:00 2001 From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de> Date: Mon, 17 Jul 2023 21:40:12 +0200 Subject: [PATCH] cdfInqContents: fix memory leak --- src/stream_cdf_i.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/stream_cdf_i.c b/src/stream_cdf_i.c index 5f9e6befc..c8bbd0b92 100644 --- a/src/stream_cdf_i.c +++ b/src/stream_cdf_i.c @@ -3682,7 +3682,11 @@ cdf_define_all_vars(stream_t *streamptr, int vlistID, int instID, int modelID, i // release mem of not freed attributes for (int ncvarid = 0; ncvarid < num_ncvars; ncvarid++) - if (ncvars[ncvarid].atts) Free(ncvars[ncvarid].atts); + { + ncvar_t *ncvar = &ncvars[ncvarid]; + if (ncvar->atts) Free(ncvar->atts); + ncvar->atts = NULL; + } if (varids) Free(varids); @@ -4784,7 +4788,16 @@ cdfInqContents(stream_t *streamptr) if (ncdims) Free(ncdims); // free ncvars - if (ncvars) Free(ncvars); + if (ncvars) + { + for (int ncvarid = 0; ncvarid < nvars; ncvarid++) + { + ncvar_t *ncvar = &ncvars[ncvarid]; + if (ncvar->atts) Free(ncvar->atts); + if (ncvar->vct) Free(ncvar->vct); + } + Free(ncvars); + } return 0; } -- GitLab