From 72a9984055899292b21bcff83497fa1967a1e806 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Steven=20Dee=20=28J=C5=8Dshin=29?= Date: Fri, 30 Aug 2024 08:42:50 -0700 Subject: [PATCH] Minor cleanup Put a noexcept annotation on drop_shared (since dispose is also noexcept for now) and simplify reset, fixing a bug in weak_ptr::swap. --- ctl/shared_ptr.h | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/ctl/shared_ptr.h b/ctl/shared_ptr.h index 1744a26a7..3cf46e306 100644 --- a/ctl/shared_ptr.h +++ b/ctl/shared_ptr.h @@ -72,7 +72,7 @@ class shared_ref incref(&shared); } - void drop_shared() + void drop_shared() noexcept { if (decref(&shared)) { dispose(); @@ -281,11 +281,7 @@ class shared_ptr void reset() noexcept { - if (rc) { - rc->drop_shared(); - } - p = nullptr; - rc = nullptr; + shared_ptr().swap(*this); } template @@ -398,14 +394,12 @@ class weak_ptr void reset() noexcept { - if (rc) - rc->drop_weak(); - p = nullptr; - rc = nullptr; + weak_ptr().swap(*this); } void swap(weak_ptr& r) noexcept { + using ctl::swap; swap(p, r.p); swap(rc, r.rc); }