From 32bb37dfbfd910d0bdfbbc86fc110ab4a1d928a7 Mon Sep 17 00:00:00 2001 From: Kim Woelders Date: Fri, 20 Oct 2006 18:03:15 +0000 Subject: [PATCH] Fix major memory leak in xpm loader. SVN revision: 26713 --- src/modules/loaders/loader_xpm.c | 52 ++++++++++++++++---------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/modules/loaders/loader_xpm.c b/src/modules/loaders/loader_xpm.c index d98f475..100472d 100644 --- a/src/modules/loaders/loader_xpm.c +++ b/src/modules/loaders/loader_xpm.c @@ -246,6 +246,32 @@ load(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity, per_inc = 100.0 / (((float)w) * h); + if (im->loader || immediate_load || progress) + { + im->data = + (DATA32 *) malloc(sizeof(DATA32) * im->w * + im->h); + if (!im->data) + { + free(cmap); + free(line); + fclose(f); + xpm_parse_done(); + return 0; + } + ptr = im->data; + end = ptr + (sizeof(DATA32) * w * h); + pixels = w * h; + } + else + { + free(cmap); + free(line); + fclose(f); + xpm_parse_done(); + return 1; + } + j = 0; context++; } @@ -363,32 +389,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity, { UNSET_FLAG(im->flags, F_HAS_ALPHA); } - - if (im->loader || immediate_load || progress) - { - im->data = - (DATA32 *) malloc(sizeof(DATA32) * im->w * - im->h); - if (!im->data) - { - free(cmap); - free(line); - fclose(f); - xpm_parse_done(); - return 0; - } - ptr = im->data; - end = ptr + (sizeof(DATA32) * w * h); - pixels = w * h; - } - else - { - free(cmap); - free(line); - fclose(f); - xpm_parse_done(); - return 1; - } } else {