]> git.imager.perl.org - imager.git/blobdiff - datatypes.c
fix a memory leak when failing to write a 2 color icon image
[imager.git] / datatypes.c
index c7b37b3d6f8996d3c5a3fa695edc37fa965e9eb8..6577d10711638aac1ca4a46b04e7896d9da36ca2 100644 (file)
@@ -1,6 +1,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#define IMAGER_NO_CONTEXT
 #include "imager.h"
 
 /*
@@ -9,7 +10,6 @@
 
 struct i_bitmap*
 btm_new(i_img_dim xsize,i_img_dim ysize) {
-  i_img_dim i;
   size_t bytes;
   struct i_bitmap *btm;
   btm=(struct i_bitmap*)mymalloc(sizeof(struct i_bitmap)); /* checked 4jul05 tonyc */
@@ -22,7 +22,7 @@ btm_new(i_img_dim xsize,i_img_dim ysize) {
   btm->data=(char*)mymalloc(bytes); /* checked 4jul05 tonyc */
   btm->xsize=xsize;
   btm->ysize=ysize;
-  for(i=0;i<(xsize*ysize+8)/8;i++) btm->data[i]=0; /* Is this always needed */
+  memset(btm->data, 0, bytes);
   return btm;
 }
 
@@ -130,8 +130,9 @@ llist_push(struct llist *l,const void *data) {
     }
   }
   /*   fprintf(stderr,"0x%08X\n",l->t); */
-  if (llist_llink_push(l,l->t,data)) { 
-    i_fatal(3, "out of memory\n");
+  if (llist_llink_push(l,l->t,data)) {
+    dIMCTX;
+    im_fatal(aIMCTX, 3, "out of memory\n");
   }
 }
 
@@ -231,9 +232,6 @@ llink_destroy(struct llink* l) {
 
 static int
 llist_llink_push(struct llist *lst, struct llink *lnk, const void *data) {
-  int multip;
-  multip = lst->multip;
-
   /*   fprintf(stderr,"llist_llink_push: data=0x%08X -> 0x%08X\n",data,*(int*)data);
        fprintf(stderr,"ssize = %d, multip = %d, fill = %d\n",lst->ssize,lst->multip,lnk->fill); */
   if (lnk->fill == lst->multip) return 1;