Skip to content

Commit e0a1cc5

Browse files
committed
Added delete_if_exists_() for clarity
1 parent cfae72c commit e0a1cc5

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

include/oup/observable_unique_ptr.hpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,14 @@ class basic_observable_ptr {
290290
delete_object_(block, ptr_deleter.data, ptr_deleter);
291291
}
292292

293+
void delete_object_if_exists_() noexcept {
294+
if (ptr_deleter.data) {
295+
delete_object_();
296+
block = nullptr;
297+
ptr_deleter.data = nullptr;
298+
}
299+
}
300+
293301
/// Decide whether to allocate a new control block or not.
294302
/** \note If the object inherits from @ref basic_enable_observer_from_this, and
295303
* `Policy::is_sealed` is false (by construction this will always be the case when this
@@ -350,11 +358,7 @@ class basic_observable_ptr {
350358

351359
/// Destructor, releases owned object if any
352360
~basic_observable_ptr() noexcept {
353-
if (ptr_deleter.data) {
354-
delete_object_();
355-
block = nullptr;
356-
ptr_deleter.data = nullptr;
357-
}
361+
delete_object_if_exists_();
358362
}
359363

360364
/// Transfer ownership by implicit casting
@@ -396,8 +400,8 @@ class basic_observable_ptr {
396400
basic_observable_ptr(basic_observable_ptr<U,D,Policy>&& manager, V* value) noexcept :
397401
basic_observable_ptr(value != nullptr ? manager.block : nullptr, value) {
398402

399-
if (manager.ptr_deleter.data != nullptr && value == nullptr) {
400-
manager.delete_object_();
403+
if (value == nullptr) {
404+
manager.delete_object_if_exists_();
401405
}
402406

403407
manager.block = nullptr;
@@ -416,8 +420,8 @@ class basic_observable_ptr {
416420
basic_observable_ptr(basic_observable_ptr<U,D,Policy>&& manager, V* value, Deleter del) noexcept :
417421
basic_observable_ptr(value != nullptr ? manager.block : nullptr, value, std::move(del)) {
418422

419-
if (manager.ptr_deleter.data != nullptr && value == nullptr) {
420-
manager.delete_object_();
423+
if (value == nullptr) {
424+
manager.delete_object_if_exists_();
421425
}
422426

423427
manager.block = nullptr;
@@ -453,9 +457,7 @@ class basic_observable_ptr {
453457
* pointer is set to null and looses ownership.
454458
*/
455459
basic_observable_ptr& operator=(basic_observable_ptr&& value) noexcept {
456-
if (ptr_deleter.data) {
457-
delete_object_();
458-
}
460+
delete_object_if_exists_();
459461

460462
block = value.block;
461463
value.block = nullptr;
@@ -476,9 +478,7 @@ class basic_observable_ptr {
476478
template<typename U, typename D, typename enable =
477479
std::enable_if_t<std::is_convertible_v<U*, T*> && std::is_convertible_v<D, Deleter>>>
478480
basic_observable_ptr& operator=(basic_observable_ptr<U,D,Policy>&& value) noexcept {
479-
if (ptr_deleter.data) {
480-
delete_object_();
481-
}
481+
delete_object_if_exists_();
482482

483483
block = value.block;
484484
value.block = nullptr;

0 commit comments

Comments
 (0)