Update Wuffs version

Also re-write some C "designated initializer" expressions in
SkWuffsCodec.cpp. They may be valid C (C99), but are not necessarily
valid C++. Even though GCC and Clang extends C++ to accept them,
Microsoft Visual C++ does not.

This pulls in the Wuffs bug fix:
https://github.com/google/wuffs/commit/c4b8a6a4cc4bb833d4414018e2a6a1967af51bca
"Don't use designated initializers".

Bug: skia:8235
Bug: skia:8764
Change-Id: I57be56ce0b7f5bc1eb38ecc113a9b7ad7d2e373b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/199440
Reviewed-by: Leon Scroggins <scroggo@google.com>
Commit-Queue: Leon Scroggins <scroggo@google.com>
diff --git a/DEPS b/DEPS
index bce9725..587f3ac 100644
--- a/DEPS
+++ b/DEPS
@@ -30,7 +30,7 @@
   "third_party/externals/spirv-tools"     : "https://skia.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git@e9e4393b1c5aad7553c05782acefbe32b42644bd",
   "third_party/externals/swiftshader"     : "https://swiftshader.googlesource.com/SwiftShader@fa8603c6113f2746038376f0359e58c050fa6f18",
   #"third_party/externals/v8"              : "https://chromium.googlesource.com/v8/v8.git@5f1ae66d5634e43563b2d25ea652dfb94c31a3b4",
-  "third_party/externals/wuffs"           : "https://skia.googlesource.com/external/github.com/google/wuffs.git@2276be64e93bd7664e0fec191b8fb3139d516ba8",
+  "third_party/externals/wuffs"           : "https://skia.googlesource.com/external/github.com/google/wuffs.git@ae6e8db4ad4236654e7b8c68d24f41a37e5f4f96",
   "third_party/externals/zlib"            : "https://chromium.googlesource.com/chromium/src/third_party/zlib@47af7c547f8551bd25424e56354a2ae1e9062859",
   "third_party/externals/Nima-Cpp"        : "https://skia.googlesource.com/external/github.com/2d-inc/Nima-Cpp.git@4bd02269d7d1d2e650950411325eafa15defb084",
   "third_party/externals/Nima-Math-Cpp"   : "https://skia.googlesource.com/external/github.com/2d-inc/Nima-Math-Cpp.git@e0c12772093fa8860f55358274515b86885f0108",
diff --git a/src/codec/SkWuffsCodec.cpp b/src/codec/SkWuffsCodec.cpp
index 82d223a..6a7e4ae 100644
--- a/src/codec/SkWuffsCodec.cpp
+++ b/src/codec/SkWuffsCodec.cpp
@@ -19,7 +19,7 @@
 // As we have not #define'd WUFFS_IMPLEMENTATION, the #include here is
 // including a header file, even though that file name ends in ".c".
 #include "wuffs-v0.2.c"
-#if WUFFS_VERSION_BUILD_METADATA_COMMIT_COUNT < 1640
+#if WUFFS_VERSION_BUILD_METADATA_COMMIT_COUNT < 1655
 #error "Wuffs version is too old. Upgrade to the latest version."
 #endif
 
@@ -323,9 +323,9 @@
       fWorkbufPtr(std::move(workbuf_ptr)),
       fWorkbufLen(workbuf_len),
       fFirstFrameIOPosition(imgcfg.first_frame_io_position()),
-      fFrameConfig((wuffs_base__frame_config){}),
+      fFrameConfig(wuffs_base__null_frame_config()),
       fPixelBuffer(pixbuf),
-      fIOBuffer((wuffs_base__io_buffer){}),
+      fIOBuffer(wuffs_base__null_io_buffer()),
       fIncrDecDst(nullptr),
       fIncrDecRowBytes(0),
       fSwizzler(nullptr),
@@ -340,13 +340,8 @@
     // this SkWuffsCodec object, but fIOBuffer's backing array (fBuffer) is.
     SkASSERT(iobuf.data.len == SK_WUFFS_CODEC_BUFFER_SIZE);
     memmove(fBuffer, iobuf.data.ptr, iobuf.meta.wi);
-    fIOBuffer = ((wuffs_base__io_buffer){
-        .data = ((wuffs_base__slice_u8){
-            .ptr = fBuffer,
-            .len = SK_WUFFS_CODEC_BUFFER_SIZE,
-        }),
-        .meta = iobuf.meta,
-    });
+    fIOBuffer.data = wuffs_base__make_slice_u8(fBuffer, SK_WUFFS_CODEC_BUFFER_SIZE);
+    fIOBuffer.meta = iobuf.meta;
 }
 
 const SkWuffsFrame* SkWuffsCodec::frame(int i) const {
@@ -802,7 +797,7 @@
     if (!fStream->rewind()) {
         return SkCodec::kInternalError;
     }
-    fIOBuffer.meta = ((wuffs_base__io_buffer_meta){});
+    fIOBuffer.meta = wuffs_base__null_io_buffer_meta();
 
     SkCodec::Result result =
         reset_and_decode_image_config(fDecoder.get(), nullptr, &fIOBuffer, fStream.get());
@@ -831,12 +826,9 @@
 
 const char* SkWuffsCodec::decodeFrame() {
     while (true) {
-        const char* status = fDecoder->decode_frame(&fPixelBuffer, fIOBuffer.reader(),
-                                                    ((wuffs_base__slice_u8){
-                                                        .ptr = fWorkbufPtr.get(),
-                                                        .len = fWorkbufLen,
-                                                    }),
-                                                    NULL);
+        const char* status =
+            fDecoder->decode_frame(&fPixelBuffer, fIOBuffer.reader(),
+                                   wuffs_base__make_slice_u8(fWorkbufPtr.get(), fWorkbufLen), NULL);
         if ((status == wuffs_base__suspension__short_read) &&
             fill_buffer(&fIOBuffer, fStream.get())) {
             continue;
@@ -867,15 +859,11 @@
 
 std::unique_ptr<SkCodec> SkWuffsCodec_MakeFromStream(std::unique_ptr<SkStream> stream,
                                                      SkCodec::Result*          result) {
-    uint8_t                  buffer[SK_WUFFS_CODEC_BUFFER_SIZE];
-    wuffs_base__io_buffer    iobuf = ((wuffs_base__io_buffer){
-        .data = ((wuffs_base__slice_u8){
-            .ptr = buffer,
-            .len = SK_WUFFS_CODEC_BUFFER_SIZE,
-        }),
-        .meta = ((wuffs_base__io_buffer_meta){}),
-    });
-    wuffs_base__image_config imgcfg = ((wuffs_base__image_config){});
+    uint8_t               buffer[SK_WUFFS_CODEC_BUFFER_SIZE];
+    wuffs_base__io_buffer iobuf =
+        wuffs_base__make_io_buffer(wuffs_base__make_slice_u8(buffer, SK_WUFFS_CODEC_BUFFER_SIZE),
+                                   wuffs_base__null_io_buffer_meta());
+    wuffs_base__image_config imgcfg = wuffs_base__null_image_config();
 
     // Wuffs is primarily a C library, not a C++ one. Furthermore, outside of
     // the wuffs_base__etc types, the sizeof a file format specific type like
@@ -938,12 +926,10 @@
     }
     std::unique_ptr<uint8_t, decltype(&sk_free)> pixbuf_ptr(
         reinterpret_cast<uint8_t*>(pixbuf_ptr_raw), &sk_free);
-    wuffs_base__pixel_buffer pixbuf = ((wuffs_base__pixel_buffer){});
+    wuffs_base__pixel_buffer pixbuf = wuffs_base__null_pixel_buffer();
 
-    const char* status = pixbuf.set_from_slice(&imgcfg.pixcfg, ((wuffs_base__slice_u8){
-                                                                   .ptr = pixbuf_ptr.get(),
-                                                                   .len = SkToSizeT(pixbuf_len),
-                                                               }));
+    const char* status = pixbuf.set_from_slice(
+        &imgcfg.pixcfg, wuffs_base__make_slice_u8(pixbuf_ptr.get(), SkToSizeT(pixbuf_len)));
     if (status != nullptr) {
         SkCodecPrintf("set_from_slice: %s", status);
         *result = SkCodec::kInternalError;