@@ -21,6 +21,7 @@ typedef struct callback_args_t {
21
21
static void do_callback (void * arg ) {
22
22
callback_args_t * args = (callback_args_t * )arg ;
23
23
args -> callback (args -> event_type , args -> event_data , args -> user_data );
24
+ free (arg );
24
25
}
25
26
26
27
void _emscripten_run_callback_on_thread (pthread_t t ,
@@ -29,14 +30,13 @@ void _emscripten_run_callback_on_thread(pthread_t t,
29
30
void * event_data ,
30
31
void * user_data ) {
31
32
em_proxying_queue * q = emscripten_proxy_get_system_queue ();
32
- callback_args_t arg = {
33
- .callback = f ,
34
- .event_type = event_type ,
35
- .event_data = event_data ,
36
- .user_data = user_data ,
37
- };
33
+ callback_args_t * arg = malloc (sizeof (callback_args_t ));
34
+ arg -> callback = f ;
35
+ arg -> event_type = event_type ;
36
+ arg -> event_data = event_data ;
37
+ arg -> user_data = user_data ;
38
38
39
- if (!emscripten_proxy_sync (q , t , do_callback , & arg )) {
40
- assert (false && "emscripten_proxy_sync failed" );
39
+ if (!emscripten_proxy_async (q , t , do_callback , arg )) {
40
+ assert (false && "emscripten_proxy_async failed" );
41
41
}
42
42
}
0 commit comments