File tree Expand file tree Collapse file tree
Framework/Core/include/Framework Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -115,31 +115,30 @@ struct LifetimeHolder {
115115 // invoke the callback early (e.g. for the Product<> case)
116116 void release ()
117117 {
118- if (ptr) {
119- auto * released = ptr;
120- ptr = nullptr ;
121- auto releaseCallback = std::move (callback);
122- if (releaseCallback) {
123- try {
124- releaseCallback (*released);
125- } catch (...) {
126- delete released;
127- throw ;
128- }
129- }
130- delete released;
118+ if (!ptr) {
119+ return ;
120+ }
121+
122+ std::unique_ptr<T> released{ptr};
123+ ptr = nullptr ;
124+ auto releaseCallback = std::move (callback);
125+ if (!releaseCallback) {
126+ return ;
131127 }
128+ releaseCallback (*released);
132129 }
133130
134131 // Delete the owned object without invoking the release callback. This is used
135132 // when a partially filled object must be abandoned.
136133 void discard ()
137134 {
138- if (ptr) {
139- callback = nullptr ;
140- delete ptr;
141- ptr = nullptr ;
135+ if (!ptr) {
136+ return ;
142137 }
138+
139+ callback = nullptr ;
140+ delete ptr;
141+ ptr = nullptr ;
143142 }
144143};
145144
You can’t perform that action at this time.
0 commit comments