Skip to content

Commit cf837e2

Browse files
authored
[lldb] Add assert to NonNullSharedPtr move constructor (#168979)
As suggested by Augusto, add an assert to the NonNullSharedPtr move constructor.
1 parent 2ab9492 commit cf837e2

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

lldb/include/lldb/Utility/NonNullSharedPtr.h

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,14 @@ template <typename T> class NonNullSharedPtr : private std::shared_ptr<T> {
2929
public:
3030
NonNullSharedPtr(const std::shared_ptr<T> &t)
3131
: Base(t ? t : std::make_shared<T>()) {
32-
assert(t && "NonNullSharedPtr initialized from NULL shared_ptr");
32+
assert(t && "NonNullSharedPtr constructed from nullptr");
3333
}
3434

35-
NonNullSharedPtr(std::shared_ptr<T> &&t)
36-
: Base(t ? std::move(t) : std::make_shared<T>()) {
37-
// Can't assert on t as it's been moved-from.
35+
NonNullSharedPtr(std::shared_ptr<T> &&t) : Base(std::move(t)) {
36+
const auto b = static_cast<bool>(*this);
37+
assert(b && "NonNullSharedPtr constructed from nullptr");
38+
if (!b)
39+
Base::operator=(std::make_shared<T>());
3840
}
3941

4042
NonNullSharedPtr(const NonNullSharedPtr &other) : Base(other) {}

0 commit comments

Comments
 (0)