diff --git a/headers/private/shared/WeakReferenceable.h b/headers/private/shared/WeakReferenceable.h index df49fd9152..22d4181885 100644 --- a/headers/private/shared/WeakReferenceable.h +++ b/headers/private/shared/WeakReferenceable.h @@ -8,6 +8,8 @@ #include +#include + namespace BPrivate { @@ -38,6 +40,8 @@ public: BWeakReferenceable(); virtual ~BWeakReferenceable(); + status_t InitCheck(); + void AcquireReference() { fPointer->GetUnchecked(); } @@ -243,7 +247,7 @@ WeakPointer::GetUnchecked() inline BWeakReferenceable::BWeakReferenceable() : - fPointer(new WeakPointer(this)) + fPointer(new(std::nothrow) WeakPointer(this)) { } @@ -255,6 +259,15 @@ BWeakReferenceable::~BWeakReferenceable() } +inline status_t +BWeakReferenceable::InitCheck() +{ + if (fPointer == NULL) + return B_NO_MEMORY; + return B_OK; +} + + inline WeakPointer* BWeakReferenceable::GetWeakPointer() {