diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libnsgif.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/libnsgif.c b/src/libnsgif.c index 24dbf7d..2bea30e 100644 --- a/src/libnsgif.c +++ b/src/libnsgif.c @@ -688,13 +688,21 @@ gif__decode_complex(gif_animation *gif, row_available = x < available ? x : available; x -= row_available; available -= row_available; - while (row_available-- > 0) { - register unsigned int colour; - colour = *uncompressed++; - if (colour != transparency_index) { - *frame_scanline = colour_table[colour]; + if (transparency_index > 0xFF) { + while (row_available-- > 0) { + *frame_scanline++ = + colour_table[*uncompressed++]; + } + } else { + while (row_available-- > 0) { + register unsigned int colour; + colour = *uncompressed++; + if (colour != transparency_index) { + *frame_scanline = + colour_table[colour]; + } + frame_scanline++; } - frame_scanline++; } } } |