summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThomas Lively <tlively@google.com>2024-03-07 08:20:19 -0800
committerGitHub <noreply@github.com>2024-03-07 08:20:19 -0800
commit3c779e20be9870d4985763b6fbe8d85e17827353 (patch)
tree0eaa05b00400d51f629b44e111d04459b05f8eeb /src
parent4ca311d83187bad3b5790635efc687b747a1b1e7 (diff)
downloadbinaryen-3c779e20be9870d4985763b6fbe8d85e17827353.tar.gz
binaryen-3c779e20be9870d4985763b6fbe8d85e17827353.tar.bz2
binaryen-3c779e20be9870d4985763b6fbe8d85e17827353.zip
Fix EH fuzz bugs (#6381)
Due to a typo, the fuzzer was making externrefs when it should have been making exnrefs. Fix that and also let eh-utils.cpp know that TryTable exists to avoid an assertion failure.
Diffstat (limited to 'src')
-rw-r--r--src/ir/eh-utils.cpp2
-rw-r--r--src/tools/fuzzing/fuzzing.cpp2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/ir/eh-utils.cpp b/src/ir/eh-utils.cpp
index f9cd2d940..70b5452a6 100644
--- a/src/ir/eh-utils.cpp
+++ b/src/ir/eh-utils.cpp
@@ -84,7 +84,7 @@ getFirstPop(Expression* catchBody, bool& isPopNested, Expression**& popPtr) {
} else {
isPopNested = true;
}
- } else if (firstChild->is<Try>()) {
+ } else if (firstChild->is<Try>() || firstChild->is<TryTable>()) {
isPopNested = true;
} else {
WASM_UNREACHABLE("Unexpected control flow expression");
diff --git a/src/tools/fuzzing/fuzzing.cpp b/src/tools/fuzzing/fuzzing.cpp
index c1625d726..701822452 100644
--- a/src/tools/fuzzing/fuzzing.cpp
+++ b/src/tools/fuzzing/fuzzing.cpp
@@ -2456,7 +2456,7 @@ Expression* TranslateToFuzzReader::makeBasicRef(Type type) {
return builder.makeArrayNewFixed(trivialArray, {});
}
case HeapType::exn: {
- auto null = builder.makeRefNull(HeapType::ext);
+ auto null = builder.makeRefNull(HeapType::exn);
if (!type.isNullable()) {
assert(funcContext);
return builder.makeRefAs(RefAsNonNull, null);