diff options
author | Thomas Lively <tlively@google.com> | 2024-03-07 08:20:19 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-07 08:20:19 -0800 |
commit | 3c779e20be9870d4985763b6fbe8d85e17827353 (patch) | |
tree | 0eaa05b00400d51f629b44e111d04459b05f8eeb /src | |
parent | 4ca311d83187bad3b5790635efc687b747a1b1e7 (diff) | |
download | binaryen-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.cpp | 2 | ||||
-rw-r--r-- | src/tools/fuzzing/fuzzing.cpp | 2 |
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); |