diff --git a/src/RS_images.c b/src/RS_images.c index 0283173..a29a080 100644 --- a/src/RS_images.c +++ b/src/RS_images.c @@ -8,6 +8,7 @@ void getPaletteFromFile(RS_IMAGE *img, FILE *f) { case 16: case 256: fread(img->palette, sizeof(unsigned char), entries*3, f); + break; } } @@ -44,60 +45,61 @@ void decodePixels(RS_IMAGE *img) { break; case 4: if (img->paletteEntries == 0) { + size = img->width * img->height; img->pixels = calloc(1, size); unpack4To8bits(img->samples, img->pixels, size); } else if (img->paletteEntries == 16) { + size = img->width * img->height; img->pixels = calloc(1, size*3); unpack4To24bitsRGB(img->samples, img->pixels, size, img->palette); } break; case 8: if (img->paletteEntries == 0) { + size = img->width * img->height; img->pixels = calloc(1, size); memcpy(img->pixels, img->samples, size); } else if (img->paletteEntries == 256) { + size = img->width * img->height; img->pixels = calloc(1, size*3); unpack8To24bitsRGB(img->samples, img->pixels, size, img->palette); } break; case 16: + size = img->width * img->height; img->pixels = calloc(1, size); useOddBytes(img->samples, img->pixels, size); break; } } -void unpack4To8bits(unsigned char *src, unsigned char *dst, int sampling) { +void unpack4To8bits(unsigned char *samples_tab, unsigned char *pixels_tab, int sampling) { int i; char v; for(i=0; i