@@ -21,6 +21,7 @@ typedef struct callback_args_t {
2121static  void  do_callback (void *  arg ) {
2222  callback_args_t *  args  =  (callback_args_t * )arg ;
2323  args -> callback (args -> event_type , args -> event_data , args -> user_data );
24+   free (arg );
2425}
2526
2627void  _emscripten_run_callback_on_thread (pthread_t  t ,
@@ -29,14 +30,13 @@ void _emscripten_run_callback_on_thread(pthread_t t,
2930                                        void *  event_data ,
3031                                        void *  user_data ) {
3132  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 ;
3838
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" );
4141  }
4242}
0 commit comments