Set decoder_workbuf_len_max_incl_worst_case to 1
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 183df0c..a3539cb 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -2779,11 +2779,11 @@
// ---------------- Public Consts
-#define WUFFS_DEFLATE__DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE 33280
+#define WUFFS_DEFLATE__DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE 1
static const uint64_t //
wuffs_deflate__decoder_workbuf_len_max_incl_worst_case //
- WUFFS_BASE__POTENTIALLY_UNUSED = 33280;
+ WUFFS_BASE__POTENTIALLY_UNUSED = 1;
// ---------------- Struct Declarations
@@ -3173,11 +3173,11 @@
// ---------------- Public Consts
-#define WUFFS_GIF__DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE 65535
+#define WUFFS_GIF__DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE 1
static const uint64_t //
wuffs_gif__decoder_workbuf_len_max_incl_worst_case //
- WUFFS_BASE__POTENTIALLY_UNUSED = 65535;
+ WUFFS_BASE__POTENTIALLY_UNUSED = 1;
// ---------------- Struct Declarations
@@ -3480,11 +3480,11 @@
// ---------------- Public Consts
-#define WUFFS_GZIP__DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE 33280
+#define WUFFS_GZIP__DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE 1
static const uint64_t //
wuffs_gzip__decoder_workbuf_len_max_incl_worst_case //
- WUFFS_BASE__POTENTIALLY_UNUSED = 33280;
+ WUFFS_BASE__POTENTIALLY_UNUSED = 1;
// ---------------- Struct Declarations
@@ -3655,11 +3655,11 @@
// ---------------- Public Consts
-#define WUFFS_ZLIB__DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE 33280
+#define WUFFS_ZLIB__DECODER_WORKBUF_LEN_MAX_INCL_WORST_CASE 1
static const uint64_t //
wuffs_zlib__decoder_workbuf_len_max_incl_worst_case //
- WUFFS_BASE__POTENTIALLY_UNUSED = 33280;
+ WUFFS_BASE__POTENTIALLY_UNUSED = 1;
// ---------------- Struct Declarations
@@ -6277,7 +6277,7 @@
return ((wuffs_base__range_ii_u64){0});
}
- return wuffs_base__utility__make_range_ii_u64(33280, 33280);
+ return wuffs_base__utility__make_range_ii_u64(1, 1);
}
// -------- func deflate.decoder.decode_io_writer
@@ -8791,9 +8791,7 @@
return ((wuffs_base__range_ii_u64){0});
}
- return wuffs_base__utility__make_range_ii_u64(
- ((uint64_t)(self->private_impl.f_width)),
- ((uint64_t)(self->private_impl.f_width)));
+ return wuffs_base__utility__make_range_ii_u64(1, 1);
}
// -------- func gif.decoder.restart_frame
@@ -10492,12 +10490,7 @@
(iop_a_src += 1, wuffs_base__return_empty_struct());
}
label_1_break:;
- if (((uint64_t)(self->private_impl.f_width)) <
- ((uint64_t)(a_workbuf.len))) {
- a_workbuf = wuffs_base__slice_u8__subslice_j(
- a_workbuf, ((uint64_t)(self->private_impl.f_width)));
- } else if (((uint64_t)(self->private_impl.f_width)) >
- ((uint64_t)(a_workbuf.len))) {
+ if (1 > ((uint64_t)(a_workbuf.len))) {
status = wuffs_base__error__bad_workbuf_length;
goto exit;
}
@@ -10829,7 +10822,7 @@
return ((wuffs_base__range_ii_u64){0});
}
- return wuffs_base__utility__make_range_ii_u64(33280, 33280);
+ return wuffs_base__utility__make_range_ii_u64(1, 1);
}
// -------- func gzip.decoder.decode_io_writer
@@ -11302,7 +11295,7 @@
return ((wuffs_base__range_ii_u64){0});
}
- return wuffs_base__utility__make_range_ii_u64(33280, 33280);
+ return wuffs_base__utility__make_range_ii_u64(1, 1);
}
// -------- func zlib.decoder.decode_io_writer
diff --git a/std/deflate/decode_deflate.wuffs b/std/deflate/decode_deflate.wuffs
index ec4a981..ef3c19c 100644
--- a/std/deflate/decode_deflate.wuffs
+++ b/std/deflate/decode_deflate.wuffs
@@ -31,7 +31,9 @@
pri status "?internal error: inconsistent distance"
pri status "?internal error: inconsistent n_bits"
-pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 32768 + 512
+// TODO: replace the placeholder 1 value with either 0 or (32768 + 512),
+// depending on whether we'll move decoder.history into the workbuf.
+pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 1
// The next two tables were created by script/print-deflate-magic-numbers.go.
//
diff --git a/std/gif/decode_gif.wuffs b/std/gif/decode_gif.wuffs
index c36ef18..a053922 100644
--- a/std/gif/decode_gif.wuffs
+++ b/std/gif/decode_gif.wuffs
@@ -24,8 +24,10 @@
pri status "?internal error: inconsistent ri/wi"
-// TODO: reference lzw.decoder_workbuf_len_max_incl_worst_case.
-pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 0xFFFF
+// TODO: replace the placeholder 1 value with either 0 or 0xFFFF (plus
+// lzw.decoder_workbuf_len_max_incl_worst_case), depending on whether we'll
+// need a per-pixel-row workbuf.
+pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 1
// See the spec appendix E "Interlaced Images" on page 29. The first element
// represents either that the frame was non-interlaced, or that all interlace
@@ -192,8 +194,8 @@
pub func decoder.workbuf_len() base.range_ii_u64 {
return this.util.make_range_ii_u64(
- min_incl:this.width as base.u64,
- max_incl:this.width as base.u64)
+ min_incl:decoder_workbuf_len_max_incl_worst_case,
+ max_incl:decoder_workbuf_len_max_incl_worst_case)
}
pub func decoder.restart_frame!(index base.u64, io_position base.u64) base.status {
@@ -717,9 +719,7 @@
args.src.skip_fast!(actual:1, worst_case:1)
}
- if (this.width as base.u64) < args.workbuf.length() {
- args.workbuf = args.workbuf[:this.width as base.u64]
- } else if (this.width as base.u64) > args.workbuf.length() {
+ if decoder_workbuf_len_max_incl_worst_case > args.workbuf.length() {
return base."?bad workbuf length"
}
diff --git a/std/gzip/decode_gzip.wuffs b/std/gzip/decode_gzip.wuffs
index 89b7ed1..d61fd0f 100644
--- a/std/gzip/decode_gzip.wuffs
+++ b/std/gzip/decode_gzip.wuffs
@@ -21,7 +21,7 @@
pub status "?bad header"
// TODO: reference deflate.decoder_workbuf_len_max_incl_worst_case.
-pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 32768 + 512
+pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 1
pub struct decoder?(
ignore_checksum base.bool,
diff --git a/std/zlib/decode_zlib.wuffs b/std/zlib/decode_zlib.wuffs
index c7719b7..57e2483 100644
--- a/std/zlib/decode_zlib.wuffs
+++ b/std/zlib/decode_zlib.wuffs
@@ -23,7 +23,7 @@
pri status "?TODO: unsupported preset dictionary"
// TODO: reference deflate.decoder_workbuf_len_max_incl_worst_case.
-pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 32768 + 512
+pub const decoder_workbuf_len_max_incl_worst_case base.u64 = 1
pub struct decoder?(
ignore_checksum base.bool,