From 2a42bbcee8224aedd09afb48dbbe740e7124ae80 Mon Sep 17 00:00:00 2001 From: Lars Magne Ingebrigtsen Date: Mon, 19 Aug 2013 17:14:42 +0200 Subject: [PATCH] Fix previous commit. (imagemagick_get_animation_cache): Revert to previous definition so that it actually works. But keep the memory leak fix. --- src/image.c | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/image.c b/src/image.c index ec89ee076d9..00f2a035c44 100644 --- a/src/image.c +++ b/src/image.c @@ -7895,6 +7895,7 @@ imagemagick_create_cache (char *signature) cache->wand = 0; cache->index = 0; cache->next = 0; + cache->update_time = current_emacs_time (); return cache; } @@ -7927,28 +7928,25 @@ imagemagick_get_animation_cache (MagickWand *wand) { char *signature = MagickGetImageSignature (wand); struct animation_cache *cache; - struct animation_cache **pcache; imagemagick_prune_animation_cache (); + cache = animation_cache; - if (! animation_cache) - animation_cache = cache = imagemagick_create_cache (signature); - else + if (! cache) { - for (pcache = &animation_cache; *pcache; pcache = &cache->next) - { - cache = *pcache; - if (! cache) - { - animation_cache = cache = imagemagick_create_cache (signature); - break; - } - if (strcmp (signature, cache->signature) == 0) - { - DestroyString (signature); - break; - } - } + animation_cache = imagemagick_create_cache (signature); + return animation_cache; + } + + while (strcmp(signature, cache->signature) && + cache->next) + cache = cache->next; + + if (strcmp(signature, cache->signature)) + { + cache->next = imagemagick_create_cache (signature); + DestroyString (signature); + return cache->next; } cache->update_time = current_emacs_time (); -- 2.39.5