for (y = 0; y < height; y++)
{
/* decode a scan line into a temporary buffer first */
- byte *dst_ptr = (pcx_depth == 8) ? bitmap_ptr : row_buffer;
+ byte *dst_ptr = (pcx_depth == 8 ? bitmap_ptr : row_buffer);
byte value = 0, count = 0;
int value_int;
int i;
if (count == 0)
{
if ((value_int = fgetc(file)) == EOF)
+ {
+ free(row_buffer);
return FALSE;
+ }
+
value = (byte)value_int;
if ((value & 0xc0) == 0xc0) /* this is a repeat count byte */
{
count = value & 0x3f; /* extract repeat count from byte */
+
if ((value_int = fgetc(file)) == EOF)
+ {
+ free(row_buffer);
return FALSE;
+ }
+
value = (byte)value_int;
}
else
{
int i, j, x = 0;
- for(i = 0; i < pcx->bytes_per_line; i++)
+ for (i = 0; i < pcx->bytes_per_line; i++)
{
byte value = *src_ptr++;
- for(j = 7; j >= 0; j--)
+ for (j = 7; j >= 0; j--)
{
byte bit = (value >> j) & 1;
byte *src_ptr = row_buffer;
int plane;
- for(plane = 0; plane < pcx->color_planes; plane++)
+ for (plane = 0; plane < pcx->color_planes; plane++)
{
int x;
dst_ptr = bitmap_ptr + plane;
- for(x = 0; x < width; x++)
+ for (x = 0; x < width; x++)
{
*dst_ptr = *src_ptr++;
dst_ptr += pcx->color_planes;
bitmap_ptr += image->bytes_per_row;
}
+ free(row_buffer);
+
return TRUE;
}