Skip to content

Commit ea9a3c1

Browse files
committed
fix(plugins): Event object from a plugin being shared to other plugins
1 parent e31aee5 commit ea9a3c1

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

src/plugins/object.cpp

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)