fix a context object reference leak from upgrading a paletted image
authorTony Cook <tony@develop-help.com>
Wed, 9 Mar 2016 10:05:50 +0000 (21:05 +1100)
committerTony Cook <tony@develop-help.com>
Wed, 9 Mar 2016 10:05:50 +0000 (21:05 +1100)
The internal process of upgrading a paletted image to a direct image,
done when a color not in the palette is written to the image, no
long leaks a reference count to the context object.

palimg.c

index b32c0d4..0c37b58 100644 (file)
--- a/palimg.c
+++ b/palimg.c
@@ -205,10 +205,12 @@ i_img_to_rgb_inplace(i_img *im) {
   i_img_rgb_convert(&temp, im);
 
   /* nasty hack */
-  (im->i_f_destroy)(im);
-  myfree(im->idata);
+  i_img_exorcise(im);
   *im = temp;
 
+  /* i_img_empty_ch() calls i_img_init() which takes a ref */
+  im_context_refdec(aIMCTX, "img_destroy");
+
   return 1;
 }