Add "#png: unsupported CgBI extension" status
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index ba45608..81cbe2d 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -9170,6 +9170,7 @@
extern const char wuffs_png__error__bad_header[];
extern const char wuffs_png__error__bad_text_chunk_not_latin_1[];
extern const char wuffs_png__error__missing_palette[];
+extern const char wuffs_png__error__unsupported_cgbi_extension[];
extern const char wuffs_png__error__unsupported_png_compression_method[];
extern const char wuffs_png__error__unsupported_png_file[];
@@ -35809,6 +35810,7 @@
const char wuffs_png__error__bad_header[] = "#png: bad header";
const char wuffs_png__error__bad_text_chunk_not_latin_1[] = "#png: bad text chunk (not Latin-1)";
const char wuffs_png__error__missing_palette[] = "#png: missing palette";
+const char wuffs_png__error__unsupported_cgbi_extension[] = "#png: unsupported CgBI extension";
const char wuffs_png__error__unsupported_png_compression_method[] = "#png: unsupported PNG compression method";
const char wuffs_png__error__unsupported_png_file[] = "#png: unsupported PNG file";
const char wuffs_png__error__internal_error_inconsistent_i_o[] = "#png: internal error: inconsistent I/O";
@@ -37803,6 +37805,10 @@
v_magic = t_1;
}
if (v_magic != 5927942488114331648) {
+ if (v_magic == 5278895250759221248) {
+ status = wuffs_base__make_status(wuffs_png__error__unsupported_cgbi_extension);
+ goto exit;
+ }
status = wuffs_base__make_status(wuffs_png__error__bad_header);
goto exit;
}
diff --git a/std/png/common_consts.wuffs b/std/png/common_consts.wuffs
index 2c4e419..47a0fe9 100644
--- a/std/png/common_consts.wuffs
+++ b/std/png/common_consts.wuffs
@@ -19,6 +19,7 @@
pub status "#bad header"
pub status "#bad text chunk (not Latin-1)"
pub status "#missing palette"
+pub status "#unsupported CgBI extension"
pub status "#unsupported PNG compression method"
pub status "#unsupported PNG file"
diff --git a/std/png/decode_png.wuffs b/std/png/decode_png.wuffs
index 62f118b..899847c 100644
--- a/std/png/decode_png.wuffs
+++ b/std/png/decode_png.wuffs
@@ -219,6 +219,12 @@
}
magic = args.src.read_u64le?()
if magic <> '\x00\x00\x00\x0DIHDR'le {
+ if magic == '\x00\x00\x00\x04CgBI'le {
+ // TODO: add support for Apple's unofficial CgBI extension to
+ // PNG, once there exists good documentation for it. See
+ // https://github.com/w3c/PNG-spec/issues/45
+ return "#unsupported CgBI extension"
+ }
return "#bad header"
}
this.chunk_type_array[0] = 'I'