Use nothrow and add InitCheck method to check if allocation went fine.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42765 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
#include <Referenceable.h>
|
#include <Referenceable.h>
|
||||||
|
|
||||||
|
#include <new>
|
||||||
|
|
||||||
|
|
||||||
namespace BPrivate {
|
namespace BPrivate {
|
||||||
|
|
||||||
@@ -38,6 +40,8 @@ public:
|
|||||||
BWeakReferenceable();
|
BWeakReferenceable();
|
||||||
virtual ~BWeakReferenceable();
|
virtual ~BWeakReferenceable();
|
||||||
|
|
||||||
|
status_t InitCheck();
|
||||||
|
|
||||||
void AcquireReference()
|
void AcquireReference()
|
||||||
{ fPointer->GetUnchecked(); }
|
{ fPointer->GetUnchecked(); }
|
||||||
|
|
||||||
@@ -243,7 +247,7 @@ WeakPointer::GetUnchecked()
|
|||||||
inline
|
inline
|
||||||
BWeakReferenceable::BWeakReferenceable()
|
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*
|
inline WeakPointer*
|
||||||
BWeakReferenceable::GetWeakPointer()
|
BWeakReferenceable::GetWeakPointer()
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user