Harmonize do_bench_{gif,image}_decode
diff --git a/test/c/std/gif.c b/test/c/std/gif.c
index 7629b63..95b0fe4 100644
--- a/test/c/std/gif.c
+++ b/test/c/std/gif.c
@@ -2189,27 +2189,8 @@
                     const char* filename,
                     wuffs_base__pixel_format pixfmt,
                     uint64_t iters_unscaled) {
-  wuffs_base__io_buffer have = ((wuffs_base__io_buffer){
-      .data = g_have_slice_u8,
-  });
-  wuffs_base__io_buffer src = ((wuffs_base__io_buffer){
-      .data = g_src_slice_u8,
-  });
-  CHECK_STRING(read_file(&src, filename));
-
-  bench_start();
-  uint64_t n_bytes = 0;
-  uint64_t i;
-  uint64_t iters = iters_unscaled * g_flags.iterscale;
-  for (i = 0; i < iters; i++) {
-    have.meta.wi = 0;
-    src.meta.ri = 0;
-    CHECK_STRING(
-        decode_func(NULL, &have, wuffs_initialize_flags, pixfmt, &src));
-    n_bytes += have.meta.wi;
-  }
-  bench_finish(iters, n_bytes);
-  return NULL;
+  return do_bench_image_decode(decode_func, wuffs_initialize_flags, pixfmt,
+                               filename, 0, SIZE_MAX, iters_unscaled);
 }
 
 const char*  //
diff --git a/test/c/testlib/testlib.c b/test/c/testlib/testlib.c
index d7cd760..cfef4c6 100644
--- a/test/c/testlib/testlib.c
+++ b/test/c/testlib/testlib.c
@@ -1017,6 +1017,9 @@
     size_t src_ri,
     size_t src_wi,
     uint64_t iters_unscaled) {
+  wuffs_base__io_buffer have = ((wuffs_base__io_buffer){
+      .data = g_have_slice_u8,
+  });
   wuffs_base__io_buffer src = ((wuffs_base__io_buffer){
       .data = g_src_slice_u8,
   });
@@ -1027,9 +1030,10 @@
   uint64_t i;
   uint64_t iters = iters_unscaled * g_flags.iterscale;
   for (i = 0; i < iters; i++) {
+    have.meta.wi = 0;
     src.meta.ri = src_ri;
     CHECK_STRING(
-        (*decode_func)(&n_bytes, NULL, wuffs_initialize_flags, pixfmt, &src));
+        (*decode_func)(&n_bytes, &have, wuffs_initialize_flags, pixfmt, &src));
   }
   bench_finish(iters, n_bytes);
   return NULL;