testlib: apply workbuf_len when decoding images
diff --git a/test/c/testlib/testlib.c b/test/c/testlib/testlib.c
index a992ee8..61e677d 100644
--- a/test/c/testlib/testlib.c
+++ b/test/c/testlib/testlib.c
@@ -1237,6 +1237,17 @@
   CHECK_STATUS("decode_image_config",
                wuffs_base__image_decoder__decode_image_config(b, &ic, &src));
 
+  wuffs_base__slice_u8 workbuf = g_work_slice_u8;
+  wuffs_base__range_ii_u64 workbuf_len =
+      wuffs_base__image_decoder__workbuf_len(b);
+  if (workbuf_len.min_incl > workbuf_len.max_incl) {
+    return "inconsistent workbuf_len";
+  }
+  if (workbuf_len.max_incl > workbuf.len) {
+    return "workbuf_len is too large";
+  }
+  workbuf.len = workbuf_len.max_incl;
+
   uint32_t have_width = wuffs_base__pixel_config__width(&ic.pixcfg);
   if (have_width != want_width) {
     RETURN_FAIL("width: have %" PRIu32 ", want %" PRIu32, have_width,
@@ -1254,9 +1265,9 @@
   wuffs_base__pixel_buffer pb = ((wuffs_base__pixel_buffer){});
   CHECK_STATUS("set_from_slice", wuffs_base__pixel_buffer__set_from_slice(
                                      &pb, &ic.pixcfg, g_pixel_slice_u8));
-  CHECK_STATUS("decode_frame", wuffs_base__image_decoder__decode_frame(
-                                   b, &pb, &src, WUFFS_BASE__PIXEL_BLEND__SRC,
-                                   g_work_slice_u8, NULL));
+  CHECK_STATUS("decode_frame",
+               wuffs_base__image_decoder__decode_frame(
+                   b, &pb, &src, WUFFS_BASE__PIXEL_BLEND__SRC, workbuf, NULL));
 
   uint64_t n = wuffs_base__pixel_config__pixbuf_len(&ic.pixcfg);
   if (n < 4) {