Clean up std/gif which_palette variable
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 0adea1f..ff53768 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -3422,7 +3422,6 @@
bool f_restarted;
bool f_previous_lzw_decode_ended_abruptly;
bool f_has_global_palette;
- uint8_t f_which_palette;
uint8_t f_interlace;
bool f_seen_num_loops;
uint32_t f_num_loops;
@@ -3499,6 +3498,7 @@
uint64_t scratch;
} s_decode_id_part0[1];
struct {
+ uint8_t v_which_palette;
uint32_t v_num_palette_entries;
uint32_t v_i;
uint64_t scratch;
@@ -10553,6 +10553,7 @@
wuffs_base__status status = NULL;
uint8_t v_flags = 0;
+ uint8_t v_which_palette = 0;
uint32_t v_num_palette_entries = 0;
uint32_t v_i = 0;
uint32_t v_argb = 0;
@@ -10576,6 +10577,7 @@
uint32_t coro_susp_point = self->private_impl.p_decode_id_part1[0];
if (coro_susp_point) {
+ v_which_palette = self->private_data.s_decode_id_part1[0].v_which_palette;
v_num_palette_entries =
self->private_data.s_decode_id_part1[0].v_num_palette_entries;
v_i = self->private_data.s_decode_id_part1[0].v_i;
@@ -10597,7 +10599,7 @@
} else {
self->private_impl.f_interlace = 0;
}
- self->private_impl.f_which_palette = 1;
+ v_which_palette = 1;
if ((v_flags & 128) != 0) {
v_num_palette_entries = (((uint32_t)(1)) << (1 + (v_flags & 7)));
v_i = 0;
@@ -10659,7 +10661,7 @@
wuffs_base__make_slice_u8(self->private_data.f_palettes[1], 1024),
wuffs_base__make_slice_u8(self->private_data.f_palettes[0], 1024));
} else {
- self->private_impl.f_which_palette = 0;
+ v_which_palette = 0;
}
if (self->private_impl.f_gc_has_transparent_index) {
self->private_data.f_palettes[1][(
@@ -10685,8 +10687,7 @@
wuffs_base__pixel_buffer__pixel_format(a_dst), v_dst_palette,
1191444488,
wuffs_base__make_slice_u8(
- self->private_data.f_palettes[self->private_impl.f_which_palette],
- 1024));
+ self->private_data.f_palettes[v_which_palette], 1024));
if (self->private_impl.f_previous_lzw_decode_ended_abruptly) {
wuffs_base__ignore_status(wuffs_lzw__decoder__initialize(
&self->private_data.f_lzw, sizeof(wuffs_lzw__decoder), WUFFS_VERSION,
@@ -10719,6 +10720,7 @@
suspend:
self->private_impl.p_decode_id_part1[0] =
wuffs_base__status__is_suspension(status) ? coro_susp_point : 0;
+ self->private_data.s_decode_id_part1[0].v_which_palette = v_which_palette;
self->private_data.s_decode_id_part1[0].v_num_palette_entries =
v_num_palette_entries;
self->private_data.s_decode_id_part1[0].v_i = v_i;
diff --git a/std/gif/decode_gif.wuffs b/std/gif/decode_gif.wuffs
index 46b1794..f7a0843 100644
--- a/std/gif/decode_gif.wuffs
+++ b/std/gif/decode_gif.wuffs
@@ -137,7 +137,6 @@
previous_lzw_decode_ended_abruptly base.bool,
has_global_palette base.bool,
- which_palette base.u8[..1],
// interlace indexes the interlace_start and interlace_delta arrays.
interlace base.u8[..4],
@@ -758,6 +757,7 @@
pri func decoder.decode_id_part1?(dst ptr base.pixel_buffer, src base.io_reader) {
var flags base.u8
+ var which_palette base.u8[..1]
var num_palette_entries base.u32[..256]
var i base.u32
var argb base.u32
@@ -772,7 +772,7 @@
}
// Read the optional Local Color Table.
- this.which_palette = 1
+ which_palette = 1
if (flags & 0x80) <> 0 {
num_palette_entries = (1 as base.u32) << (1 + (flags & 0x07))
i = 0
@@ -801,7 +801,7 @@
} else if this.gc_has_transparent_index {
this.palettes[1][:].copy_from_slice!(s:this.palettes[0][:])
} else {
- this.which_palette = 0
+ which_palette = 0
}
// Set the gc_transparent_index palette entry to transparent black.
@@ -823,7 +823,7 @@
dst_pixfmt:args.dst.pixel_format(),
dst_palette:dst_palette,
src_pixfmt:0x47040008,
- src_palette:this.palettes[this.which_palette][:])
+ src_palette:this.palettes[which_palette][:])
// Other GIF implementations accept GIF files that aren't completely spec
// compliant. For example, the test/data/gifplayer-muybridge.gif file