@@ -206,12 +206,8 @@ void SpecializedForAspect<SpecAspect>::_set(
206206 usedSpecializedAspectAccess = true ;
207207#endif // DART_UNITTEST_SPECIALIZED_ASPECT_ACCESS
208208
209- if (aspect) {
210- mSpecAspectIterator ->second = aspect->cloneAspect ();
211- addToComposite (mSpecAspectIterator ->second .get ());
212- } else {
213- mSpecAspectIterator ->second = nullptr ;
214- }
209+ _replaceAspect (
210+ mSpecAspectIterator ->second , aspect ? aspect->cloneAspect () : nullptr );
215211}
216212
217213// ==============================================================================
@@ -232,8 +228,7 @@ void SpecializedForAspect<SpecAspect>::_set(
232228 usedSpecializedAspectAccess = true ;
233229#endif // DART_UNITTEST_SPECIALIZED_ASPECT_ACCESS
234230
235- mSpecAspectIterator ->second = std::move (aspect);
236- addToComposite (mSpecAspectIterator ->second .get ());
231+ _replaceAspect (mSpecAspectIterator ->second , std::move (aspect));
237232}
238233
239234// ==============================================================================
@@ -254,11 +249,11 @@ SpecAspect* SpecializedForAspect<SpecAspect>::_createAspect(
254249 usedSpecializedAspectAccess = true ;
255250#endif // DART_UNITTEST_SPECIALIZED_ASPECT_ACCESS
256251
257- SpecAspect* aspect = new SpecAspect (std::forward<Args>(args)...);
258- mSpecAspectIterator -> second = std::unique_ptr<SpecAspect>( aspect);
259- addToComposite ( aspect);
252+ auto aspect = std::make_unique< SpecAspect> (std::forward<Args>(args)...);
253+ SpecAspect* raw = aspect. get ( );
254+ _replaceAspect ( mSpecAspectIterator -> second , std::move ( aspect) );
260255
261- return aspect ;
256+ return raw ;
262257}
263258
264259// ==============================================================================
@@ -279,8 +274,7 @@ void SpecializedForAspect<SpecAspect>::_removeAspect(type<SpecAspect>)
279274
280275 DART_COMMON_CHECK_ILLEGAL_ASPECT_ERASE (erase, SpecAspect, DART_BLANK);
281276
282- removeFromComposite (mSpecAspectIterator ->second .get ());
283- mSpecAspectIterator ->second = nullptr ;
277+ _replaceAspect (mSpecAspectIterator ->second , nullptr );
284278}
285279
286280// ==============================================================================
0 commit comments