The testcase works for me on 1.39.2, strange. But perhaps there is something nondeterministic in how closure works that ends up with different variable names, hitting or not hitting the bug.
Perhaps build it with -g1 (to not minify whitespace) and see what the bad value is there? Please attach a build with that if you can. On Tue, Nov 12, 2019 at 6:16 AM Sampo Syrjänen <[email protected]> wrote: > emsdk version is 1.39.2 > > On Tuesday, November 12, 2019 at 4:11:45 PM UTC+2, Sampo Syrjänen wrote: >> >> Hello! I have trouble getting addFunction to work with closure compiler >> enabled. There's a minimal project here to reproduce the issue: >> >> // lib.c >> typedef int (*callback_t)(int a); >> >> int func(callback_t callback, int a) >> { >> return callback(a); >> } >> >> // test.js >> const lib = require("./lib.js"); >> setTimeout(() => { >> const callback = (a) => { >> return 40 + a; >> }; >> const callbackPtr = lib.addFunction(callback, "ii"); >> console.log(lib._func(callbackPtr, 2)); >> }, 100); >> >> # Makefile >> lib.js: lib.c >> emcc -s EXPORTED_FUNCTIONS="['_func']" -s >> EXTRA_EXPORTED_RUNTIME_METHODS="['addFunction']" -s >> RESERVED_FUNCTION_POINTERS=1 --closure 1 -o $@ $^ >> >> .PHONY: clean >> clean: >> $(RM) lib.js lib.wasm >> >> test: lib.js >> node test.js >> >> >> With make test I get this: >> >> node test.js >> C:\work\closure\lib.js:28 >> throw b; >> ^ >> >> LinkError: WebAssembly.Instance(): Import #0 module="e" function="f" >> error: function import requires a callable >> at Object.a.addFunction (C:\work\closure\lib.js:629:10) >> at Timeout._onTimeout (C:\work\closure\test.js:6:29) >> [90m at listOnTimeout (internal/timers.js:531:17) [39m >> [90m at processTimers (internal/timers.js:475:7) [39m >> gmake: *** [Makefile:9: test] Error 7 >> >> What am I missing? How should I compile to make addFunction work? >> > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/7f93bf40-3bfe-42da-a01c-439f03c0a1b3%40googlegroups.com > <https://groups.google.com/d/msgid/emscripten-discuss/7f93bf40-3bfe-42da-a01c-439f03c0a1b3%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpR2f2m-NevzGqUbmo%2BJHvB%2B%3Dto74UTcHECSXJVt5AwSFw%40mail.gmail.com.
