mirror of https://github.com/ecmwf/eccodes.git
Further memory leaks fixed
This commit is contained in:
parent
c1e414116d
commit
230797d018
|
@ -313,6 +313,7 @@ static int select_area(grib_accessor* a)
|
|||
if (nsubsets != 0) {
|
||||
subsets_ar = grib_iarray_get_array(subsets);
|
||||
ret = grib_set_long_array(h, self->extractSubsetList, subsets_ar, nsubsets);
|
||||
grib_context_free(c, subsets_ar);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -443,6 +443,7 @@ static int select_datetime(grib_accessor* a)
|
|||
if (nsubsets != 0) {
|
||||
subsets_ar = grib_iarray_get_array(subsets);
|
||||
ret = grib_set_long_array(h, self->extractSubsetList, subsets_ar, nsubsets);
|
||||
grib_context_free(c, subsets_ar);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -207,6 +207,7 @@ static int apply_thinning(grib_accessor* a)
|
|||
if (nsubsets != 0) {
|
||||
subsets_ar = grib_iarray_get_array(subsets);
|
||||
ret = grib_set_long_array(h, self->extractSubsetList, subsets_ar, nsubsets);
|
||||
grib_context_free(c, subsets_ar);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
@ -218,6 +219,7 @@ static int apply_thinning(grib_accessor* a)
|
|||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
grib_iarray_delete(subsets);
|
||||
}
|
||||
else {
|
||||
return GRIB_NOT_IMPLEMENTED;
|
||||
|
|
|
@ -116,14 +116,17 @@ grib_expression* new_sub_string_expression(grib_context* c, const char* value, s
|
|||
|
||||
if (length == 0) {
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "Invalid substring: length must be > 0");
|
||||
grib_context_free_persistent(c, e);
|
||||
return NULL;
|
||||
}
|
||||
if (start > slen) { /* to catch a -ve number passed to start */
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "Invalid substring: start=%lu", start);
|
||||
grib_context_free_persistent(c, e);
|
||||
return NULL;
|
||||
}
|
||||
if (start + length > slen) {
|
||||
grib_context_log(c, GRIB_LOG_ERROR, "Invalid substring: start(=%lu)+length(=%lu) > length('%s'))", start, length, value);
|
||||
grib_context_free_persistent(c, e);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -1440,9 +1440,11 @@ grib_action* grib_action_from_filter(const char* filter)
|
|||
grib_action* a = NULL;
|
||||
grib_context* context = grib_context_get_default();
|
||||
a = grib_parse_file(context, filter);
|
||||
|
||||
grib_context_free_persistent(context, context->grib_reader->first->filename);
|
||||
grib_context_free_persistent(context, context->grib_reader->first);
|
||||
grib_context_free_persistent(context, context->grib_reader);
|
||||
|
||||
context->grib_reader = NULL;
|
||||
return a;
|
||||
}
|
||||
|
|
|
@ -351,6 +351,7 @@ int grib_accessors_list_print(grib_handle* h, grib_accessors_list* al, const cha
|
|||
*newline = 1;
|
||||
cols = 0;
|
||||
}
|
||||
grib_context_free(h->context, cvals[i]);
|
||||
}
|
||||
}
|
||||
grib_context_free(h->context, cvals);
|
||||
|
@ -485,6 +486,7 @@ int grib_recompose_print(grib_handle* h, grib_accessor* observer, const char* un
|
|||
case ']':
|
||||
loc[mode] = 0;
|
||||
mode = -1;
|
||||
if(al) grib_accessors_list_delete(h->context, al);
|
||||
al = grib_find_accessors_list(h, loc); /* This allocates memory */
|
||||
if (!al) {
|
||||
if (!fail) {
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
leak:tools/grib_filter.c
|
||||
leak:tools/bufr_filter.c
|
||||
leak:tools/bufr_dump.c
|
||||
leak:process_elements
|
||||
leak:tools/bufr_compare.c
|
||||
leak:tools/gts_filter.c
|
||||
leak:src/action_class_rename.c
|
||||
leak:tools/grib_to_netcdf.c
|
||||
leak:tests/bufr_ecc-517.c
|
||||
|
|
Loading…
Reference in New Issue