@@ -66,11 +66,14 @@ EventResult PluginObject::TriggerEvent(std::string invokedBy, std::string eventN
6666 EventResult response = EventResult::Continue;
6767 try
6868 {
69- if (!eventObject) {
70- ClassData tmpObject ({ { " plugin_name" , invokedBy } }, " Event" , ctx);
71- eventObject = &tmpObject;
69+ ClassData* localObj = eventObject;
70+ bool created = false ;
71+ if (!localObj) {
72+ localObj = new ClassData ({ { " plugin_name" , invokedBy } }, " Event" , ctx);
73+ created = true ;
7274 }
73- auto value = (*eventFunctionPtr)(eventObject, eventName, eventPayload);
75+
76+ auto value = (*eventFunctionPtr)(localObj, eventName, eventPayload);
7477 if (value.isNumber ())
7578 {
7679 int result = value.cast <int >();
@@ -79,6 +82,7 @@ EventResult PluginObject::TriggerEvent(std::string invokedBy, std::string eventN
7982 else
8083 response = (EventResult)result;
8184 }
85+ if (created) delete localObj;
8286 }
8387 catch (EException& e)
8488 {
@@ -107,11 +111,14 @@ EventResult PluginObject::TriggerEventJSON(std::string invokedBy, std::string ev
107111 EventResult response = EventResult::Continue;
108112 try
109113 {
110- if (!eventObject) {
111- ClassData tmpObject ({ { " plugin_name" , invokedBy } }, " Event" , ctx);
112- eventObject = &tmpObject;
114+ ClassData* localObj = eventObject;
115+ bool created = false ;
116+ if (!localObj) {
117+ localObj = new ClassData ({ { " plugin_name" , invokedBy } }, " Event" , ctx);
118+ created = true ;
113119 }
114- auto value = (*eventFunctionPtrJSON)(eventObject, eventName, eventPayload);
120+
121+ auto value = (*eventFunctionPtrJSON)(localObj, eventName, eventPayload);
115122 if (value.isNumber ())
116123 {
117124 int result = value.cast <int >();
@@ -120,6 +127,7 @@ EventResult PluginObject::TriggerEventJSON(std::string invokedBy, std::string ev
120127 else
121128 response = (EventResult)result;
122129 }
130+ if (created) delete localObj;
123131 }
124132 catch (EException& e)
125133 {
0 commit comments