fix(web): eeschema schematic open path — Asyncify/dynCall fixes + bump submodules
- inject-dyncall-shims.sh: add a dynCallLegacy -> wasmExports fallback so embind's generic dynCall path finds the DYNCALLS=1 trampolines. Without it, an Asyncify unwind/rewind through an embind call (kicadOpenFile -> OpenProjectFiles) died with "f is not a function". - open-flow.ts: kicadOpenFile runs OpenProjectFiles under Asyncify, so its sync return is a falsy placeholder. Invoke it and poll the frame title for the load instead of trusting the return value, and never fall back to UI automation while the hook is in flight (it would re-enter the suspended Asyncify call). - .gitignore: ignore .playwright-mcp scratch. - bump kicad + wxwidgets submodules to the wasm schematic-open fixes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
735e5aa8e9
commit
ddd959fbc2
5 changed files with 59 additions and 12 deletions
|
|
@ -136,6 +136,22 @@ else
|
|||
fi
|
||||
fi
|
||||
|
||||
# --- 3b. embind dynCall fallback (dynCallLegacy -> wasmExports) ----------------
|
||||
# embind's generic caller (getDynCaller) routes through dynCallLegacy, which only
|
||||
# reads Module["dynCall_<sig>"]. But the DYNCALLS=1 trampolines are wasm EXPORTS,
|
||||
# not Module properties, so that lookup is undefined and an Asyncify unwind/rewind
|
||||
# through an embind call (e.g. kicadOpenFile -> OpenProjectFiles) dies with
|
||||
# "f is not a function" in Asyncify.doRewind. Add a wasmExports fallback so the
|
||||
# instrumented trampoline is found and rewind survives.
|
||||
if grep -q 'embind dynCall fallback installed' "$JS_FILE"; then
|
||||
echo "dynCallLegacy fallback already present - skipping"
|
||||
elif grep -qF ' var f = Module["dynCall_" + sig];' "$JS_FILE"; then
|
||||
perl -0pi -e 's/(\Q var f = Module["dynCall_" + sig];\E)/$1\n \/\/ embind dynCall fallback installed: DYNCALLS=1 trampolines live on wasmExports, not Module.\n if (!f && typeof wasmExports !== "undefined") f = wasmExports["dynCall_" + sig];/' "$JS_FILE"
|
||||
echo "Injected dynCallLegacy wasmExports fallback"
|
||||
else
|
||||
echo "Warning: dynCallLegacy pattern not found - skipping embind dynCall fallback"
|
||||
fi
|
||||
|
||||
# --- 4. Optional diagnostics (logging only) -----------------------------------
|
||||
if [ "$SHIM_DIAGNOSTICS" = "1" ]; then
|
||||
if grep -q 'DIAG] Asyncify/fiber/modal diagnostics installed' "$JS_FILE"; then
|
||||
|
|
|
|||
Loading…
Reference in a new issue