diff --git a/include/wrapper/Messaging.hpp b/include/wrapper/Messaging.hpp index 40cb50f..ed40cb1 100644 --- a/include/wrapper/Messaging.hpp +++ b/include/wrapper/Messaging.hpp @@ -152,8 +152,9 @@ struct FluidSCMessaging{ args->getb(completionMsgData, completionMsgSize); } - - getInterfaceTable()->fDoAsynchronousCommand(inWorld, replyAddr, getName(), msg, + auto ft = getInterfaceTable(); + + ft->fDoAsynchronousCommand(inWorld, replyAddr, getName(), msg, [](World* world, void* data) // NRT thread: invocation { MessageData* m = static_cast(data); @@ -191,6 +192,9 @@ struct FluidSCMessaging{ delete m; }, static_cast(completionMsgSize), completionMsgData); + + if(completionMsgSize) ft->fRTFree(inWorld, completionMsgData); + } template // Call from NRT diff --git a/include/wrapper/NonRealtime.hpp b/include/wrapper/NonRealtime.hpp index dfe8084..254f19b 100644 --- a/include/wrapper/NonRealtime.hpp +++ b/include/wrapper/NonRealtime.hpp @@ -663,6 +663,9 @@ namespace impl { args->getb(completionMsgData, completionMsgSize); } runAsyncCommand(world, cmd, replyAddr, completionMsgSize, completionMsgData); + + if(completionMsgSize) ft->fRTFree(world, completionMsgData); + }; ft->fDefinePlugInCmd(Command::name(),commandRunner,nullptr); }