)]}'
{
  "commit": "1dd0e24010399f79d2c2c1094318d655d51e0fa3",
  "tree": "82ed5ee8907d903fcd2f2295dfc40c230e0d076a",
  "parents": [
    "e103d6de0c09ae7056bffad08131f06d09ab3789"
  ],
  "author": {
    "name": "Steven Fontanella",
    "email": "stevenfont@google.com",
    "time": "Tue Feb 10 22:29:01 2026"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Feb 10 22:29:01 2026"
  },
  "message": "Fix crash in ctor-eval when a tag is imported (#8284)\n\nFix for [fuzzer-detected crash when ctor-eval runs on a module that\nimports a\ntag](https://github.com/WebAssembly/binaryen/pull/8254#issuecomment-3880081644).\nPrior to #8254, ctor-eval would\n[crash](https://github.com/WebAssembly/binaryen/blob/23d218d0bd469a399ff17b26fdd71164beeb63fa/src/tools/wasm-ctor-eval.cpp#L396)\nwhen an imported tag was evaluated, but not when imported. Change the\ncode to allow imported tags even during evaluation.\n\nNote that we can\u0027t reason about the identity of imported tags. In the\nfollowing code, $t1 and $t2 may be the same or different tags:\n```wasm\n(import \"foo\" \"bar\" (tag $t1))\n(import \"foo\" \"bar2\" (tag $t2))\n```\n\nIn this PR, we assume that $t1 and $t2 are different tags, and that\nthey\u0027re the same tag if the import name is the same (this is also not\ntrue in general, the hosting environment may provide two different\nvalues for the same exact import name). This may cause some correctness\nissues. As a followup, we can make equality comparison of two imported\ntags throw FailToEvalException to make evaluation correct.\n\nPart of #8180.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "81fd0a3e76872c7e34e557b2ed38356dd005f09f",
      "old_mode": 33188,
      "old_path": "src/ir/import-name.h",
      "new_id": "04e141c3bc5c31fa1f3d8741ea3c2cbf600c557a",
      "new_mode": 33188,
      "new_path": "src/ir/import-name.h"
    },
    {
      "type": "modify",
      "old_id": "ac8045e547bd0c64a319074bddd138ea295ed514",
      "old_mode": 33188,
      "old_path": "src/tools/wasm-ctor-eval.cpp",
      "new_id": "1c8f0c5216f8da5de3945532ca0347f7f7dadd42",
      "new_mode": 33188,
      "new_path": "src/tools/wasm-ctor-eval.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dca27d752068eaffd230ea92171bd456712f18fc",
      "new_mode": 33188,
      "new_path": "test/ctor-eval/tag-import.wast"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9b1821d1b2d105ba8acc7461a410a5b99fd8d194",
      "new_mode": 33188,
      "new_path": "test/ctor-eval/tag-import.wast.ctors"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "89271eee38836dec62188d5aa3083c0a0632047e",
      "new_mode": 33188,
      "new_path": "test/ctor-eval/tag-import.wast.out"
    }
  ]
}
