Have magic_number_guess_fourcc use prefix_closed
diff --git a/internal/cgen/base/magic-submodule.c b/internal/cgen/base/magic-submodule.c
index 919ef77..fb2c3ae 100644
--- a/internal/cgen/base/magic-submodule.c
+++ b/internal/cgen/base/magic-submodule.c
@@ -28,7 +28,7 @@
bool prefix_closed) {
// Allow-list for the Image Type field.
if (prefix_data.len < 4) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if (prefix_data.ptr[3] != 0) {
return 0;
}
@@ -42,14 +42,14 @@
// The Number Of Images should be positive.
if (prefix_data.len < 6) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if ((prefix_data.ptr[4] == 0) && (prefix_data.ptr[5] == 0)) {
return 0;
}
// The first ICONDIRENTRY's fourth byte should be zero.
if (prefix_data.len < 10) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if (prefix_data.ptr[9] != 0) {
return 0;
}
@@ -74,7 +74,7 @@
bool prefix_closed) {
// Allow-list for the Image Type field.
if (prefix_data.len < 3) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
switch (prefix_data.ptr[2]) {
case 0x01:
@@ -92,7 +92,7 @@
// Allow-list for the Color Map Entry Size field.
if (prefix_data.len < 8) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
switch (prefix_data.ptr[7]) {
case 0x00:
@@ -107,7 +107,7 @@
// Allow-list for the Pixel Depth field.
if (prefix_data.len < 17) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
switch (prefix_data.ptr[16]) {
case 0x01:
@@ -158,7 +158,7 @@
static const size_t table_len = sizeof(table) / sizeof(table[0]);
if (prefix_data.len == 0) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
uint8_t pre_first_byte = prefix_data.ptr[0];
@@ -183,7 +183,7 @@
size_t pre_remaining_len = prefix_data.len - 1;
if (pre_remaining_len < mag_remaining_len) {
if (!memcmp(pre_remaining_ptr, mag_remaining_ptr, pre_remaining_len)) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
} else {
if (!memcmp(pre_remaining_ptr, mag_remaining_ptr, mag_remaining_len)) {
@@ -193,7 +193,7 @@
}
if (prefix_data.len < 2) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if ((prefix_data.ptr[1] == 0x00) || (prefix_data.ptr[1] == 0x01)) {
return wuffs_base__magic_number_guess_fourcc__maybe_tga(prefix_data,
prefix_closed);
@@ -208,7 +208,7 @@
if (fourcc == 0x52494646) { // 'RIFF'be
if (prefix_data.len < 12) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
uint32_t x = wuffs_base__peek_u32be__no_bounds_check(prefix_data.ptr + 8);
if (x == 0x57454250) { // 'WEBP'be
@@ -232,7 +232,7 @@
return ico;
}
if (prefix_data.len < 4) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if ((prefix_data.ptr[2] != 0x00) &&
((prefix_data.ptr[2] >= 0x80) ||
(prefix_data.ptr[3] != 0x00))) {
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index cc2e0cb..adca29d 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -15602,7 +15602,7 @@
bool prefix_closed) {
// Allow-list for the Image Type field.
if (prefix_data.len < 4) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if (prefix_data.ptr[3] != 0) {
return 0;
}
@@ -15616,14 +15616,14 @@
// The Number Of Images should be positive.
if (prefix_data.len < 6) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if ((prefix_data.ptr[4] == 0) && (prefix_data.ptr[5] == 0)) {
return 0;
}
// The first ICONDIRENTRY's fourth byte should be zero.
if (prefix_data.len < 10) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if (prefix_data.ptr[9] != 0) {
return 0;
}
@@ -15648,7 +15648,7 @@
bool prefix_closed) {
// Allow-list for the Image Type field.
if (prefix_data.len < 3) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
switch (prefix_data.ptr[2]) {
case 0x01:
@@ -15666,7 +15666,7 @@
// Allow-list for the Color Map Entry Size field.
if (prefix_data.len < 8) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
switch (prefix_data.ptr[7]) {
case 0x00:
@@ -15681,7 +15681,7 @@
// Allow-list for the Pixel Depth field.
if (prefix_data.len < 17) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
switch (prefix_data.ptr[16]) {
case 0x01:
@@ -15732,7 +15732,7 @@
static const size_t table_len = sizeof(table) / sizeof(table[0]);
if (prefix_data.len == 0) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
uint8_t pre_first_byte = prefix_data.ptr[0];
@@ -15757,7 +15757,7 @@
size_t pre_remaining_len = prefix_data.len - 1;
if (pre_remaining_len < mag_remaining_len) {
if (!memcmp(pre_remaining_ptr, mag_remaining_ptr, pre_remaining_len)) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
} else {
if (!memcmp(pre_remaining_ptr, mag_remaining_ptr, mag_remaining_len)) {
@@ -15767,7 +15767,7 @@
}
if (prefix_data.len < 2) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if ((prefix_data.ptr[1] == 0x00) || (prefix_data.ptr[1] == 0x01)) {
return wuffs_base__magic_number_guess_fourcc__maybe_tga(prefix_data,
prefix_closed);
@@ -15782,7 +15782,7 @@
if (fourcc == 0x52494646) { // 'RIFF'be
if (prefix_data.len < 12) {
- return -1;
+ return prefix_closed ? 0 : -1;
}
uint32_t x = wuffs_base__peek_u32be__no_bounds_check(prefix_data.ptr + 8);
if (x == 0x57454250) { // 'WEBP'be
@@ -15806,7 +15806,7 @@
return ico;
}
if (prefix_data.len < 4) {
- return -1;
+ return prefix_closed ? 0 : -1;
} else if ((prefix_data.ptr[2] != 0x00) &&
((prefix_data.ptr[2] >= 0x80) ||
(prefix_data.ptr[3] != 0x00))) {