wuffs gen -version=0.2.0-alpha.33
diff --git a/release/c/wuffs-v0.2.c b/release/c/wuffs-v0.2.c
index dd7ba15..a7b10b3 100644
--- a/release/c/wuffs-v0.2.c
+++ b/release/c/wuffs-v0.2.c
@@ -54,15 +54,15 @@
 // each major.minor branch, the commit count should increase monotonically.
 //
 // WUFFS_VERSION was overridden by "wuffs gen -version" based on revision
-// c5538078e4aa401af580bd3e5caf6072c56a779c committed on 2019-02-16.
+// d78101625ec2c4acba5458d370739e780a1170dd committed on 2019-02-24.
 #define WUFFS_VERSION ((uint64_t)0x0000000000020000)
 #define WUFFS_VERSION_MAJOR ((uint64_t)0x00000000)
 #define WUFFS_VERSION_MINOR ((uint64_t)0x0002)
 #define WUFFS_VERSION_PATCH ((uint64_t)0x0000)
-#define WUFFS_VERSION_PRE_RELEASE_LABEL "alpha.32"
-#define WUFFS_VERSION_BUILD_METADATA_COMMIT_COUNT 1625
-#define WUFFS_VERSION_BUILD_METADATA_COMMIT_DATE 20190216
-#define WUFFS_VERSION_STRING "0.2.0-alpha.32+1625.20190216"
+#define WUFFS_VERSION_PRE_RELEASE_LABEL "alpha.33"
+#define WUFFS_VERSION_BUILD_METADATA_COMMIT_COUNT 1640
+#define WUFFS_VERSION_BUILD_METADATA_COMMIT_DATE 20190224
+#define WUFFS_VERSION_STRING "0.2.0-alpha.33+1640.20190224"
 
 // Define WUFFS_CONFIG__STATIC_FUNCTIONS to make all of Wuffs' functions have
 // static storage. The motivation is discussed in the "ALLOW STATIC
@@ -186,15 +186,17 @@
 extern const char* wuffs_base__error__initialize_falsely_claimed_already_zeroed;
 extern const char* wuffs_base__error__initialize_not_called;
 extern const char* wuffs_base__error__interleaved_coroutine_calls;
+extern const char* wuffs_base__error__not_enough_data;
+extern const char* wuffs_base__error__too_much_data;
 
 static inline bool  //
 wuffs_base__status__is_complete(wuffs_base__status z) {
-  return (z == NULL) || ((*z != '$') && (*z != '?'));
+  return (z == NULL) || ((*z != '$') && (*z != '#'));
 }
 
 static inline bool  //
 wuffs_base__status__is_error(wuffs_base__status z) {
-  return z && (*z == '?');
+  return z && (*z == '#');
 }
 
 static inline bool  //
@@ -209,7 +211,7 @@
 
 static inline bool  //
 wuffs_base__status__is_warning(wuffs_base__status z) {
-  return z && (*z != '$') && (*z != '?');
+  return z && (*z != '$') && (*z != '#');
 }
 
 // --------
@@ -2877,6 +2879,7 @@
     uint32_t f_bits;
     uint32_t f_n_bits;
     uint32_t f_history_index;
+    uint32_t f_n_huffs_bits[2];
     bool f_end_of_block;
 
     uint32_t p_decode_io_writer[1];
@@ -2888,7 +2891,6 @@
 
   struct {
     uint32_t f_huffs[2][1024];
-    uint32_t f_n_huffs_bits[2];
     uint8_t f_history[32768];
     uint8_t f_code_lengths[320];
 
@@ -3094,6 +3096,7 @@
     uint32_t f_output_ri;
     uint32_t f_output_wi;
     uint32_t f_read_from_return_value;
+    uint16_t f_prefixes[4096];
 
     uint32_t p_decode_io_writer[1];
     uint32_t p_write_to[1];
@@ -3101,7 +3104,6 @@
 
   struct {
     uint8_t f_suffixes[4096][8];
-    uint16_t f_prefixes[4096];
     uint16_t f_lm1s[4096];
     uint8_t f_output[8199];
 
@@ -3195,8 +3197,6 @@
 extern const char* wuffs_gif__error__bad_graphic_control;
 extern const char* wuffs_gif__error__bad_header;
 extern const char* wuffs_gif__error__bad_literal_width;
-extern const char* wuffs_gif__error__not_enough_pixel_data;
-extern const char* wuffs_gif__error__too_much_pixel_data;
 
 // ---------------- Public Consts
 
@@ -4788,25 +4788,27 @@
 const char* wuffs_base__suspension__short_read = "$base: short read";
 const char* wuffs_base__suspension__short_write = "$base: short write";
 const char* wuffs_base__error__bad_argument_length_too_short =
-    "?base: bad argument (length too short)";
-const char* wuffs_base__error__bad_argument = "?base: bad argument";
-const char* wuffs_base__error__bad_call_sequence = "?base: bad call sequence";
-const char* wuffs_base__error__bad_receiver = "?base: bad receiver";
-const char* wuffs_base__error__bad_restart = "?base: bad restart";
+    "#base: bad argument (length too short)";
+const char* wuffs_base__error__bad_argument = "#base: bad argument";
+const char* wuffs_base__error__bad_call_sequence = "#base: bad call sequence";
+const char* wuffs_base__error__bad_receiver = "#base: bad receiver";
+const char* wuffs_base__error__bad_restart = "#base: bad restart";
 const char* wuffs_base__error__bad_sizeof_receiver =
-    "?base: bad sizeof receiver";
-const char* wuffs_base__error__bad_workbuf_length = "?base: bad workbuf length";
-const char* wuffs_base__error__bad_wuffs_version = "?base: bad wuffs version";
+    "#base: bad sizeof receiver";
+const char* wuffs_base__error__bad_workbuf_length = "#base: bad workbuf length";
+const char* wuffs_base__error__bad_wuffs_version = "#base: bad wuffs version";
 const char* wuffs_base__error__cannot_return_a_suspension =
-    "?base: cannot return a suspension";
+    "#base: cannot return a suspension";
 const char* wuffs_base__error__disabled_by_previous_error =
-    "?base: disabled by previous error";
+    "#base: disabled by previous error";
 const char* wuffs_base__error__initialize_falsely_claimed_already_zeroed =
-    "?base: initialize falsely claimed already zeroed";
+    "#base: initialize falsely claimed already zeroed";
 const char* wuffs_base__error__initialize_not_called =
-    "?base: initialize not called";
+    "#base: initialize not called";
 const char* wuffs_base__error__interleaved_coroutine_calls =
-    "?base: interleaved coroutine calls";
+    "#base: interleaved coroutine calls";
+const char* wuffs_base__error__not_enough_data = "#base: not enough data";
+const char* wuffs_base__error__too_much_data = "#base: too much data";
 
 // ---------------- Images
 
@@ -4999,12 +5001,16 @@
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
-  } else if ((initialize_flags &
-              WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) != 0) {
-    memset(&(self->private_impl), 0, sizeof(self->private_impl));
   } else {
-    memset(self, 0, sizeof(*self));
-    initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    void* p = &(self->private_impl);
+    size_t n = sizeof(self->private_impl);
+    if ((initialize_flags &
+         WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) == 0) {
+      p = self;
+      n = sizeof(*self);
+      initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    }
+    memset(p, 0, n);
   }
 
   self->private_impl.magic = WUFFS_BASE__MAGIC;
@@ -6006,12 +6012,16 @@
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
-  } else if ((initialize_flags &
-              WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) != 0) {
-    memset(&(self->private_impl), 0, sizeof(self->private_impl));
   } else {
-    memset(self, 0, sizeof(*self));
-    initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    void* p = &(self->private_impl);
+    size_t n = sizeof(self->private_impl);
+    if ((initialize_flags &
+         WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) == 0) {
+      p = self;
+      n = sizeof(*self);
+      initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    }
+    memset(p, 0, n);
   }
 
   self->private_impl.magic = WUFFS_BASE__MAGIC;
@@ -6141,38 +6151,38 @@
 // ---------------- Status Codes Implementations
 
 const char* wuffs_deflate__error__bad_huffman_code_over_subscribed =
-    "?deflate: bad Huffman code (over-subscribed)";
+    "#deflate: bad Huffman code (over-subscribed)";
 const char* wuffs_deflate__error__bad_huffman_code_under_subscribed =
-    "?deflate: bad Huffman code (under-subscribed)";
+    "#deflate: bad Huffman code (under-subscribed)";
 const char* wuffs_deflate__error__bad_huffman_code_length_count =
-    "?deflate: bad Huffman code length count";
+    "#deflate: bad Huffman code length count";
 const char* wuffs_deflate__error__bad_huffman_code_length_repetition =
-    "?deflate: bad Huffman code length repetition";
+    "#deflate: bad Huffman code length repetition";
 const char* wuffs_deflate__error__bad_huffman_code =
-    "?deflate: bad Huffman code";
+    "#deflate: bad Huffman code";
 const char* wuffs_deflate__error__bad_huffman_minimum_code_length =
-    "?deflate: bad Huffman minimum code length";
-const char* wuffs_deflate__error__bad_block = "?deflate: bad block";
-const char* wuffs_deflate__error__bad_distance = "?deflate: bad distance";
+    "#deflate: bad Huffman minimum code length";
+const char* wuffs_deflate__error__bad_block = "#deflate: bad block";
+const char* wuffs_deflate__error__bad_distance = "#deflate: bad distance";
 const char* wuffs_deflate__error__bad_distance_code_count =
-    "?deflate: bad distance code count";
+    "#deflate: bad distance code count";
 const char* wuffs_deflate__error__bad_literal_length_code_count =
-    "?deflate: bad literal/length code count";
+    "#deflate: bad literal/length code count";
 const char* wuffs_deflate__error__inconsistent_stored_block_length =
-    "?deflate: inconsistent stored block length";
+    "#deflate: inconsistent stored block length";
 const char* wuffs_deflate__error__missing_end_of_block_code =
-    "?deflate: missing end-of-block code";
+    "#deflate: missing end-of-block code";
 const char* wuffs_deflate__error__no_huffman_codes =
-    "?deflate: no Huffman codes";
+    "#deflate: no Huffman codes";
 const char*
     wuffs_deflate__error__internal_error_inconsistent_huffman_decoder_state =
-        "?deflate: internal error: inconsistent Huffman decoder state";
+        "#deflate: internal error: inconsistent Huffman decoder state";
 const char* wuffs_deflate__error__internal_error_inconsistent_i_o =
-    "?deflate: internal error: inconsistent I/O";
+    "#deflate: internal error: inconsistent I/O";
 const char* wuffs_deflate__error__internal_error_inconsistent_distance =
-    "?deflate: internal error: inconsistent distance";
+    "#deflate: internal error: inconsistent distance";
 const char* wuffs_deflate__error__internal_error_inconsistent_n_bits =
-    "?deflate: internal error: inconsistent n_bits";
+    "#deflate: internal error: inconsistent n_bits";
 
 // ---------------- Private Consts
 
@@ -6292,12 +6302,16 @@
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
-  } else if ((initialize_flags &
-              WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) != 0) {
-    memset(&(self->private_impl), 0, sizeof(self->private_impl));
   } else {
-    memset(self, 0, sizeof(*self));
-    initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    void* p = &(self->private_impl);
+    size_t n = sizeof(self->private_impl);
+    if ((initialize_flags &
+         WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) == 0) {
+      p = self;
+      n = sizeof(*self);
+      initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    }
+    memset(p, 0, n);
   }
 
   self->private_impl.magic = WUFFS_BASE__MAGIC;
@@ -6326,7 +6340,8 @@
   if (!self) {
     return ((wuffs_base__range_ii_u64){0});
   }
-  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+  if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
+      (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
     return ((wuffs_base__range_ii_u64){0});
   }
 
@@ -6931,7 +6946,7 @@
       status = v_status;
       goto exit;
     }
-    v_mask = ((((uint32_t)(1)) << self->private_data.f_n_huffs_bits[0]) - 1);
+    v_mask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1);
     v_i = 0;
   label_0_continue:;
     while (v_i < (v_n_lit + v_n_dist)) {
@@ -6976,7 +6991,7 @@
           status = wuffs_deflate__error__bad_huffman_code_length_repetition;
           goto exit;
         }
-        v_rep_symbol = self->private_data.f_code_lengths[(v_i - 1)];
+        v_rep_symbol = (self->private_data.f_code_lengths[(v_i - 1)] & 15);
         v_rep_count = 3;
       } else if (v_table_entry == 17) {
         v_n_extra_bits = 3;
@@ -7105,10 +7120,10 @@
 
   v_i = a_n_codes0;
   while (v_i < a_n_codes1) {
-    if (v_counts[self->private_data.f_code_lengths[v_i]] >= 320) {
+    if (v_counts[(self->private_data.f_code_lengths[v_i] & 15)] >= 320) {
       return wuffs_deflate__error__internal_error_inconsistent_huffman_decoder_state;
     }
-    v_counts[self->private_data.f_code_lengths[v_i]] += 1;
+    v_counts[(self->private_data.f_code_lengths[v_i] & 15)] += 1;
     v_i += 1;
   }
   if ((((uint32_t)(v_counts[0])) + a_n_codes0) == a_n_codes1) {
@@ -7149,12 +7164,12 @@
       return wuffs_deflate__error__internal_error_inconsistent_huffman_decoder_state;
     }
     if (self->private_data.f_code_lengths[v_i] != 0) {
-      if (v_offsets[self->private_data.f_code_lengths[v_i]] >= 320) {
+      if (v_offsets[(self->private_data.f_code_lengths[v_i] & 15)] >= 320) {
         return wuffs_deflate__error__internal_error_inconsistent_huffman_decoder_state;
       }
-      v_symbols[v_offsets[self->private_data.f_code_lengths[v_i]]] =
+      v_symbols[v_offsets[(self->private_data.f_code_lengths[v_i] & 15)]] =
           ((uint16_t)((v_i - a_n_codes0)));
-      v_offsets[self->private_data.f_code_lengths[v_i]] += 1;
+      v_offsets[(self->private_data.f_code_lengths[v_i] & 15)] += 1;
     }
     v_i += 1;
   }
@@ -7181,9 +7196,9 @@
   }
 label_1_break:;
   if (v_max_cl <= 9) {
-    self->private_data.f_n_huffs_bits[a_which] = v_max_cl;
+    self->private_impl.f_n_huffs_bits[a_which] = v_max_cl;
   } else {
-    self->private_data.f_n_huffs_bits[a_which] = 9;
+    self->private_impl.f_n_huffs_bits[a_which] = 9;
   }
   v_i = 0;
   if ((v_n_symbols != ((uint32_t)(v_offsets[v_max_cl]))) ||
@@ -7197,8 +7212,9 @@
   if (v_max_cl < 9) {
     v_initial_high_bits = (((uint32_t)(1)) << v_max_cl);
   }
-  v_prev_cl = ((uint32_t)(self->private_data.f_code_lengths[(
-      a_n_codes0 + ((uint32_t)(v_symbols[0])))]));
+  v_prev_cl = ((uint32_t)((self->private_data.f_code_lengths[(
+                               a_n_codes0 + ((uint32_t)(v_symbols[0])))] &
+                           15)));
   v_prev_redirect_key = 4294967295;
   v_top = 0;
   v_next_top = 512;
@@ -7209,8 +7225,9 @@
     if ((a_n_codes0 + ((uint32_t)(v_symbols[v_i]))) >= 320) {
       return wuffs_deflate__error__internal_error_inconsistent_huffman_decoder_state;
     }
-    v_cl = ((uint32_t)(self->private_data.f_code_lengths[(
-        a_n_codes0 + ((uint32_t)(v_symbols[v_i])))]));
+    v_cl = ((uint32_t)((self->private_data.f_code_lengths[(
+                            a_n_codes0 + ((uint32_t)(v_symbols[v_i])))] &
+                        15)));
     if (v_cl > v_prev_cl) {
       v_code <<= (v_cl - v_prev_cl);
       if (v_code >= 32768) {
@@ -7363,8 +7380,8 @@
   }
   v_bits = self->private_impl.f_bits;
   v_n_bits = self->private_impl.f_n_bits;
-  v_lmask = ((((uint32_t)(1)) << self->private_data.f_n_huffs_bits[0]) - 1);
-  v_dmask = ((((uint32_t)(1)) << self->private_data.f_n_huffs_bits[1]) - 1);
+  v_lmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1);
+  v_dmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1);
 label_0_continue:;
   while ((((uint64_t)(io1_a_dst - iop_a_dst)) >= 258) &&
          (((uint64_t)(io1_a_src - iop_a_src)) >= 12)) {
@@ -7700,8 +7717,8 @@
     }
     v_bits = self->private_impl.f_bits;
     v_n_bits = self->private_impl.f_n_bits;
-    v_lmask = ((((uint32_t)(1)) << self->private_data.f_n_huffs_bits[0]) - 1);
-    v_dmask = ((((uint32_t)(1)) << self->private_data.f_n_huffs_bits[1]) - 1);
+    v_lmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[0]) - 1);
+    v_dmask = ((((uint32_t)(1)) << self->private_impl.f_n_huffs_bits[1]) - 1);
   label_0_continue:;
     while (!(self->private_impl.p_decode_huffman_slow[0] != 0)) {
       while (true) {
@@ -8043,9 +8060,9 @@
 
 // ---------------- Status Codes Implementations
 
-const char* wuffs_lzw__error__bad_code = "?lzw: bad code";
+const char* wuffs_lzw__error__bad_code = "#lzw: bad code";
 const char* wuffs_lzw__error__internal_error_inconsistent_i_o =
-    "?lzw: internal error: inconsistent I/O";
+    "#lzw: internal error: inconsistent I/O";
 
 // ---------------- Private Consts
 
@@ -8083,12 +8100,16 @@
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
-  } else if ((initialize_flags &
-              WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) != 0) {
-    memset(&(self->private_impl), 0, sizeof(self->private_impl));
   } else {
-    memset(self, 0, sizeof(*self));
-    initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    void* p = &(self->private_impl);
+    size_t n = sizeof(self->private_impl);
+    if ((initialize_flags &
+         WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) == 0) {
+      p = self;
+      n = sizeof(*self);
+      initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    }
+    memset(p, 0, n);
   }
 
   self->private_impl.magic = WUFFS_BASE__MAGIC;
@@ -8136,7 +8157,8 @@
   if (!self) {
     return ((wuffs_base__range_ii_u64){0});
   }
-  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+  if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
+      (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
     return ((wuffs_base__range_ii_u64){0});
   }
 
@@ -8325,15 +8347,15 @@
         v_lm1_a = ((self->private_data.f_lm1s[v_prev_code] + 1) & 4095);
         self->private_data.f_lm1s[v_save_code] = v_lm1_a;
         if ((v_lm1_a % 8) != 0) {
-          self->private_data.f_prefixes[v_save_code] =
-              self->private_data.f_prefixes[v_prev_code];
+          self->private_impl.f_prefixes[v_save_code] =
+              self->private_impl.f_prefixes[v_prev_code];
           memcpy(self->private_data.f_suffixes[v_save_code],
                  self->private_data.f_suffixes[v_prev_code],
                  sizeof(self->private_data.f_suffixes[v_save_code]));
           self->private_data.f_suffixes[v_save_code][(v_lm1_a % 8)] =
               ((uint8_t)(v_code));
         } else {
-          self->private_data.f_prefixes[v_save_code] =
+          self->private_impl.f_prefixes[v_save_code] =
               ((uint16_t)(v_prev_code));
           self->private_data.f_suffixes[v_save_code][0] = ((uint8_t)(v_code));
         }
@@ -8371,7 +8393,7 @@
         }
         v_steps -= 1;
         v_o = ((v_o - 8) & 8191);
-        v_c = ((uint32_t)(self->private_data.f_prefixes[v_c]));
+        v_c = ((uint32_t)(self->private_impl.f_prefixes[v_c]));
       }
     label_1_break:;
       v_first_byte = self->private_data.f_suffixes[v_c][0];
@@ -8383,15 +8405,15 @@
         v_lm1_b = ((self->private_data.f_lm1s[v_prev_code] + 1) & 4095);
         self->private_data.f_lm1s[v_save_code] = v_lm1_b;
         if ((v_lm1_b % 8) != 0) {
-          self->private_data.f_prefixes[v_save_code] =
-              self->private_data.f_prefixes[v_prev_code];
+          self->private_impl.f_prefixes[v_save_code] =
+              self->private_impl.f_prefixes[v_prev_code];
           memcpy(self->private_data.f_suffixes[v_save_code],
                  self->private_data.f_suffixes[v_prev_code],
                  sizeof(self->private_data.f_suffixes[v_save_code]));
           self->private_data.f_suffixes[v_save_code][(v_lm1_b % 8)] =
               v_first_byte;
         } else {
-          self->private_data.f_prefixes[v_save_code] =
+          self->private_impl.f_prefixes[v_save_code] =
               ((uint16_t)(v_prev_code));
           self->private_data.f_suffixes[v_save_code][0] =
               ((uint8_t)(v_first_byte));
@@ -8549,16 +8571,13 @@
 
 // ---------------- Status Codes Implementations
 
-const char* wuffs_gif__error__bad_block = "?gif: bad block";
-const char* wuffs_gif__error__bad_extension_label = "?gif: bad extension label";
-const char* wuffs_gif__error__bad_graphic_control = "?gif: bad graphic control";
-const char* wuffs_gif__error__bad_header = "?gif: bad header";
-const char* wuffs_gif__error__bad_literal_width = "?gif: bad literal width";
-const char* wuffs_gif__error__not_enough_pixel_data =
-    "?gif: not enough pixel data";
-const char* wuffs_gif__error__too_much_pixel_data = "?gif: too much pixel data";
+const char* wuffs_gif__error__bad_block = "#gif: bad block";
+const char* wuffs_gif__error__bad_extension_label = "#gif: bad extension label";
+const char* wuffs_gif__error__bad_graphic_control = "#gif: bad graphic control";
+const char* wuffs_gif__error__bad_header = "#gif: bad header";
+const char* wuffs_gif__error__bad_literal_width = "#gif: bad literal width";
 const char* wuffs_gif__error__internal_error_inconsistent_ri_wi =
-    "?gif: internal error: inconsistent ri/wi";
+    "#gif: internal error: inconsistent ri/wi";
 
 // ---------------- Private Consts
 
@@ -8667,12 +8686,16 @@
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
-  } else if ((initialize_flags &
-              WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) != 0) {
-    memset(&(self->private_impl), 0, sizeof(self->private_impl));
   } else {
-    memset(self, 0, sizeof(*self));
-    initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    void* p = &(self->private_impl);
+    size_t n = sizeof(self->private_impl);
+    if ((initialize_flags &
+         WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) == 0) {
+      p = self;
+      n = sizeof(*self);
+      initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    }
+    memset(p, 0, n);
   }
 
   {
@@ -8791,7 +8814,8 @@
   if (!self) {
     return 0;
   }
-  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+  if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
+      (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
     return 0;
   }
 
@@ -8808,7 +8832,8 @@
   if (!self) {
     return 0;
   }
-  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+  if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
+      (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
     return 0;
   }
 
@@ -8822,7 +8847,8 @@
   if (!self) {
     return 0;
   }
-  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+  if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
+      (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
     return 0;
   }
 
@@ -8836,7 +8862,8 @@
   if (!self) {
     return ((wuffs_base__rect_ie_u32){0});
   }
-  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+  if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
+      (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
     return ((wuffs_base__rect_ie_u32){0});
   }
 
@@ -8856,7 +8883,8 @@
   if (!self) {
     return ((wuffs_base__range_ii_u64){0});
   }
-  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+  if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
+      (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
     return ((wuffs_base__range_ii_u64){0});
   }
 
@@ -10655,6 +10683,14 @@
   label_0_break:;
     self->private_impl.f_compressed_ri = 0;
     self->private_impl.f_compressed_wi = 0;
+    if ((self->private_impl.f_dst_y < self->private_impl.f_frame_rect_y1) &&
+        (self->private_impl.f_frame_rect_x0 !=
+         self->private_impl.f_frame_rect_x1) &&
+        (self->private_impl.f_frame_rect_y0 !=
+         self->private_impl.f_frame_rect_y1)) {
+      status = wuffs_base__error__not_enough_data;
+      goto exit;
+    }
 
     goto ok;
   ok:
@@ -10707,7 +10743,7 @@
   while (v_src_ri < ((uint64_t)(a_src.len))) {
     v_src = wuffs_base__slice_u8__subslice_i(a_src, v_src_ri);
     if (self->private_impl.f_dst_y >= self->private_impl.f_frame_rect_y1) {
-      return wuffs_gif__error__too_much_pixel_data;
+      return wuffs_base__error__too_much_data;
     }
     v_dst = wuffs_base__table_u8__row(v_tab, self->private_impl.f_dst_y);
     v_i = (((uint64_t)(self->private_impl.f_dst_x)) *
@@ -10794,11 +10830,11 @@
 
 // ---------------- Status Codes Implementations
 
-const char* wuffs_gzip__error__bad_checksum = "?gzip: bad checksum";
+const char* wuffs_gzip__error__bad_checksum = "#gzip: bad checksum";
 const char* wuffs_gzip__error__bad_compression_method =
-    "?gzip: bad compression method";
-const char* wuffs_gzip__error__bad_encoding_flags = "?gzip: bad encoding flags";
-const char* wuffs_gzip__error__bad_header = "?gzip: bad header";
+    "#gzip: bad compression method";
+const char* wuffs_gzip__error__bad_encoding_flags = "#gzip: bad encoding flags";
+const char* wuffs_gzip__error__bad_header = "#gzip: bad header";
 
 // ---------------- Private Consts
 
@@ -10828,12 +10864,16 @@
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
-  } else if ((initialize_flags &
-              WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) != 0) {
-    memset(&(self->private_impl), 0, sizeof(self->private_impl));
   } else {
-    memset(self, 0, sizeof(*self));
-    initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    void* p = &(self->private_impl);
+    size_t n = sizeof(self->private_impl);
+    if ((initialize_flags &
+         WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) == 0) {
+      p = self;
+      n = sizeof(*self);
+      initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    }
+    memset(p, 0, n);
   }
 
   {
@@ -10893,7 +10933,8 @@
   if (!self) {
     return ((wuffs_base__range_ii_u64){0});
   }
-  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+  if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
+      (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
     return ((wuffs_base__range_ii_u64){0});
   }
 
@@ -11272,14 +11313,14 @@
 
 // ---------------- Status Codes Implementations
 
-const char* wuffs_zlib__error__bad_checksum = "?zlib: bad checksum";
+const char* wuffs_zlib__error__bad_checksum = "#zlib: bad checksum";
 const char* wuffs_zlib__error__bad_compression_method =
-    "?zlib: bad compression method";
+    "#zlib: bad compression method";
 const char* wuffs_zlib__error__bad_compression_window_size =
-    "?zlib: bad compression window size";
-const char* wuffs_zlib__error__bad_parity_check = "?zlib: bad parity check";
+    "#zlib: bad compression window size";
+const char* wuffs_zlib__error__bad_parity_check = "#zlib: bad parity check";
 const char* wuffs_zlib__error__todo_unsupported_preset_dictionary =
-    "?zlib: TODO: unsupported preset dictionary";
+    "#zlib: TODO: unsupported preset dictionary";
 
 // ---------------- Private Consts
 
@@ -11309,12 +11350,16 @@
     if (self->private_impl.magic != 0) {
       return wuffs_base__error__initialize_falsely_claimed_already_zeroed;
     }
-  } else if ((initialize_flags &
-              WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) != 0) {
-    memset(&(self->private_impl), 0, sizeof(self->private_impl));
   } else {
-    memset(self, 0, sizeof(*self));
-    initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    void* p = &(self->private_impl);
+    size_t n = sizeof(self->private_impl);
+    if ((initialize_flags &
+         WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED) == 0) {
+      p = self;
+      n = sizeof(*self);
+      initialize_flags |= WUFFS_INITIALIZE__ALREADY_ZEROED;
+    }
+    memset(p, 0, n);
   }
 
   {
@@ -11374,7 +11419,8 @@
   if (!self) {
     return ((wuffs_base__range_ii_u64){0});
   }
-  if (self->private_impl.magic != WUFFS_BASE__MAGIC) {
+  if ((self->private_impl.magic != WUFFS_BASE__MAGIC) &&
+      (self->private_impl.magic != WUFFS_BASE__DISABLED)) {
     return ((wuffs_base__range_ii_u64){0});
   }