From a764fdbbd14f25d146c9a9bc3161066b311ace25 Mon Sep 17 00:00:00 2001 From: "Darryl L. Miles" Date: Thu, 13 Feb 2025 08:22:28 +0000 Subject: [PATCH] CodeQL MemoryMayNotBeFreed.ql grTCairo1.c GrTCairoPlotSVG() created use of 'alloc' local variable to track when an allocation occurred so exit path logic is more straight forward for compiler/analyser to see potential optimisations. the previous version was probably working just fine --- graphics/grTCairo1.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/graphics/grTCairo1.c b/graphics/grTCairo1.c index 133c518e..553fc5db 100644 --- a/graphics/grTCairo1.c +++ b/graphics/grTCairo1.c @@ -356,6 +356,7 @@ GrTCairoPlotSVG (char *filename, MagWindow *mw) { int screenw, screenh; char *fileptr; + char *alloc = NULL; cairo_surface_t *wind_surface; cairo_t *wind_context; @@ -373,7 +374,7 @@ GrTCairoPlotSVG (char *filename, MagWindow *mw) fileptr = filename; if (strchr(filename, '.') == NULL) { - fileptr = mallocMagic(strlen(filename) + 5); + fileptr = alloc = mallocMagic(strlen(filename) + 5); sprintf(fileptr, "%s.svg", filename); } @@ -387,7 +388,7 @@ GrTCairoPlotSVG (char *filename, MagWindow *mw) cairo_svg_surface_restrict_to_version(tcairodata->surface, CAIRO_SVG_VERSION_1_2); - if (fileptr != filename) freeMagic(fileptr); + if (alloc) freeMagic(alloc); tcairodata->context = cairo_create(tcairodata->surface); WindRedisplay(mw);