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.

Reply via email to