File tree Expand file tree Collapse file tree 1 file changed +11
-13
lines changed
Server/Components/CAPI/Impl Expand file tree Collapse file tree 1 file changed +11
-13
lines changed Original file line number Diff line number Diff line change @@ -141,40 +141,39 @@ class ComponentManager : public Singleton<ComponentManager>
141141 {
142142 EventArgs_Common eventArgs;
143143 constexpr std::size_t size = sizeof ...(Args);
144+ Impl::DynamicArray<void *> argsList;
144145
145- if (size > 0 )
146+ if constexpr (size > 0 )
146147 {
147- eventArgs.list = new void *[size];
148+ argsList.reserve (size);
149+ (argsList.push_back (&args), ...);
148150 }
149151
150152 eventArgs.size = size;
153+ eventArgs.list = size > 0 ? argsList.data () : nullptr ;
154+
155+ if (container->second .empty ())
156+ {
157+ return returnHandler == EventReturnHandler::StopAtTrue ? false : true ;
158+ }
159+
151160 bool result = true ;
152161 for (auto cb : container->second )
153162 {
154163 if (cb)
155164 {
156- int i = 0 ;
157- ([&]
158- {
159- eventArgs.list [i] = &args;
160- i++;
161- }(),
162- ...);
163-
164165 auto ret = cb (&eventArgs);
165166 switch (returnHandler)
166167 {
167168 case EventReturnHandler::StopAtFalse:
168169 if (!ret)
169170 {
170- delete[] eventArgs.list ;
171171 return false ;
172172 }
173173 break ;
174174 case EventReturnHandler::StopAtTrue:
175175 if (ret)
176176 {
177- delete[] eventArgs.list ;
178177 return true ;
179178 }
180179 break ;
@@ -186,7 +185,6 @@ class ComponentManager : public Singleton<ComponentManager>
186185 }
187186 }
188187
189- delete[] eventArgs.list ;
190188 return result;
191189 }
192190};
You can’t perform that action at this time.
0 commit comments