Fixed a crash that occurs during the last step of png/jpeg -> gd2 -> png/jpeg

conversion. The same crash still occures with png/jpeg -> gd -> png/jpeg, because
apparently gd format cannot handle truecolor images.
Turned off debug messages inside gd_gd2.c.
This commit is contained in:
Ilia Alshanetsky 2002-12-03 15:43:17 +00:00
parent 242ddba326
commit b08f247f32
2 changed files with 9 additions and 29 deletions

View File

@ -25,8 +25,8 @@
/* Use this for commenting out debug-print statements. */
/* Just use the first '#define' to allow all the prints... */
#define GD2_DBG(s) (s)
//#define GD2_DBG(s)
/* #define GD2_DBG(s) (s) */
#define GD2_DBG(s)
typedef struct
{
@ -184,7 +184,7 @@ _gd2CreateFromFile (gdIOCtxPtr in, int *sx, int *sy,
goto fail1;
}
im = gdImageCreate (*sx, *sy);
im = gdImageCreateTrueColor(*sx, *sy);
if (im == NULL)
{
GD2_DBG(php_gd_error("Could not create gdImage\n"));
@ -393,7 +393,7 @@ gdImageCreateFromGd2Ctx (gdIOCtxPtr in)
int r = chunkBuf[chunkPos++] << 16;
int g = chunkBuf[chunkPos++] << 8;
int b = chunkBuf[chunkPos++];
im->pixels[y][x] = a + r + g + b;
im->tpixels[y][x] = a + r + g + b;
}
else
{
@ -818,10 +818,10 @@ _gdImageGd2 (gdImagePtr im, gdIOCtx * out, int cs, int fmt)
{
for (x = xlo; x < xhi; x++)
{
int p = im->pixels[y][x];
GD2_DBG(php_gd_error("%d...",x));
if (im->trueColor)
{
int p = im->tpixels[y][x];
chunkData[chunkLen++] = gdTrueColorGetAlpha (p);
chunkData[chunkLen++] = gdTrueColorGetRed (p);
chunkData[chunkLen++] = gdTrueColorGetGreen (p);
@ -829,7 +829,7 @@ _gdImageGd2 (gdImagePtr im, gdIOCtx * out, int cs, int fmt)
}
else
{
chunkData[chunkLen++] = p;
chunkData[chunkLen++] = im->pixels[y][x];
}
};
}

View File

@ -667,20 +667,10 @@ gdImagePngCtx (gdImagePtr im, gdIOCtx * outfile)
/* Our little 7-bit alpha channel trick costs us a bit here. */
png_bytep *row_pointers;
row_pointers = gdMalloc (sizeof (png_bytep) * height);
if (row_pointers == NULL)
{
php_gd_error("gd-png error: unable to allocate row_pointers\n");
}
for (j = 0; j < height; ++j)
{
int bo = 0;
if ((row_pointers[j] = (png_bytep) gdMalloc (width * channels)) == NULL)
{
php_gd_error("gd-png error: unable to allocate rows\n");
for (i = 0; i < j; ++i)
gdFree (row_pointers[i]);
return;
}
row_pointers[j] = (png_bytep) gdMalloc (width * channels);
for (i = 0; i < width; ++i)
{
unsigned char a;
@ -714,20 +704,10 @@ gdImagePngCtx (gdImagePtr im, gdIOCtx * outfile)
{
png_bytep *row_pointers;
row_pointers = gdMalloc (sizeof (png_bytep) * height);
if (row_pointers == NULL)
{
php_gd_error("gd-png error: unable to allocate row_pointers\n");
}
for (j = 0; j < height; ++j)
{
if ((row_pointers[j] = (png_bytep) gdMalloc (width)) == NULL)
{
php_gd_error("gd-png error: unable to allocate rows\n");
for (i = 0; i < j; ++i)
gdFree (row_pointers[i]);
return;
}
for (i = 0; i < width; ++i)
row_pointers[j] = (png_bytep) gdMalloc (width);
for (i = 0; i < width; ++i)
row_pointers[j][i] = mapping[im->pixels[j][i]];
}