summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libnsgif.c20
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++;
}
}
}