Enlightenment CVS committal
Author : kwo
Project : e17
Module : libs/imlib2
Dir : e17/libs/imlib2/src/modules/loaders
Modified Files:
loader_argb.c loader_bmp.c loader_jpeg.c loader_lbm.c
loader_xpm.c
Log Message:
Various loader fixes (Marcus Meissner, bug 494).
===================================================================
RCS file: /cvs/e/e17/libs/imlib2/src/modules/loaders/loader_argb.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- loader_argb.c 9 Apr 2007 12:55:29 -0000 1.4
+++ loader_argb.c 18 Jun 2008 17:52:38 -0000 1.5
@@ -10,7 +10,7 @@
load(ImlibImage * im, ImlibProgressFunction progress,
char progress_granularity, char immediate_load)
{
- int w, h, alpha;
+ int w = 0, h = 0, alpha = 0;
FILE *f;
if (im->data)
@@ -23,11 +23,13 @@
{
char buf[256], buf2[256];
+ buf[0] = '\0';
if (!fgets(buf, 255, f))
{
fclose(f);
return 0;
}
+ buf2[0] = '\0';
sscanf(buf, "%s %i %i %i", buf2, &w, &h, &alpha);
if (strcmp(buf2, "ARGB"))
{
===================================================================
RCS file: /cvs/e/e17/libs/imlib2/src/modules/loaders/loader_bmp.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- loader_bmp.c 15 Jul 2007 08:28:11 -0000 1.10
+++ loader_bmp.c 18 Jun 2008 17:52:38 -0000 1.11
@@ -565,7 +565,7 @@
unsigned char *buffer_end_minus_1 = buffer_end - 1;
x = 0;
y = 0;
- for (i = 0; i < imgsize && buffer_ptr < buffer_end_minus_1
&& g; i++)
+ for (i = 0; i < imgsize && buffer_ptr < buffer_end_minus_1;
i++)
{
byte1 = buffer_ptr[0];
byte2 = buffer_ptr[1];
===================================================================
RCS file: /cvs/e/e17/libs/imlib2/src/modules/loaders/loader_jpeg.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- loader_jpeg.c 9 Apr 2007 12:55:29 -0000 1.5
+++ loader_jpeg.c 18 Jun 2008 17:52:38 -0000 1.6
@@ -78,6 +78,7 @@
im->h = h = cinfo.output_height;
if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
{
+ im->w = im->h = 0;
jpeg_destroy_decompress(&cinfo);
fclose(f);
return 0;
@@ -96,6 +97,7 @@
if (cinfo.rec_outbuf_height > 16)
{
+ im->w = im->h = 0;
jpeg_destroy_decompress(&cinfo);
fclose(f);
return 0;
@@ -103,6 +105,7 @@
data = malloc(w * 16 * 3);
if (!data)
{
+ im->w = im->h = 0;
jpeg_destroy_decompress(&cinfo);
fclose(f);
return 0;
@@ -111,6 +114,7 @@
ptr2 = im->data = malloc(w * h * sizeof(DATA32));
if (!im->data)
{
+ im->w = im->h = 0;
free(data);
jpeg_destroy_decompress(&cinfo);
fclose(f);
===================================================================
RCS file: /cvs/e/e17/libs/imlib2/src/modules/loaders/loader_lbm.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- loader_lbm.c 9 Apr 2007 12:55:29 -0000 1.4
+++ loader_lbm.c 18 Jun 2008 17:52:38 -0000 1.5
@@ -437,6 +437,7 @@
}
}
if (!full || !ok) {
+ im->w = im->h = 0;
freeilbm(&ilbm);
return ok;
}
@@ -452,11 +453,11 @@
plane[0] = NULL;
im->data = malloc(im->w * im->h * sizeof(DATA32));
- if (im->data) {
- n = ilbm.depth;
+ n = ilbm.depth;
+ plane[0] = malloc(((im->w + 15) / 16) * 2 * n);
+ if (im->data && plane[0]) {
if (ilbm.mask == 1) n++;
- plane[0] = malloc(((im->w + 15) / 16) * 2 * n);
for (i = 1; i < n; i++) plane[i] = plane[i - 1] + ((im->w + 15) / 16)
* 2;
z = ((im->w + 15) / 16) * 2 * n;
@@ -492,9 +493,10 @@
/*----------
* We either had a successful decode, the user cancelled, or we couldn't get
- * the memory for im->data.
+ * the memory for im->data or plane[0].
*----------*/
if (!ok) {
+ im->w = im->h = 0;
if (im->data) free(im->data);
im->data = NULL;
}
===================================================================
RCS file: /cvs/e/e17/libs/imlib2/src/modules/loaders/loader_xpm.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- loader_xpm.c 13 Jun 2008 22:39:27 -0000 1.10
+++ loader_xpm.c 18 Jun 2008 17:52:38 -0000 1.11
@@ -153,6 +153,9 @@
pixels = 0;
count = 0;
line = malloc(lsz);
+ if (!line)
+ return NULL;
+
backslash = 0;
memset(lookup, 0, sizeof(lookup));
while (!done)
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs