Bug 1016629 - b. Use RAII class to assign mStackToFill; r=snorp

This commit is contained in:
Jim Chen 2014-07-24 22:33:45 -04:00
parent 4e0d68a302
commit 87b6c95f6c

View File

@ -109,6 +109,18 @@ ThreadStackHelper::~ThreadStackHelper()
#endif
}
namespace {
template <typename T>
class ScopedSetPtr
{
private:
T*& mPtr;
public:
ScopedSetPtr(T*& p, T* val) : mPtr(p) { mPtr = val; }
~ScopedSetPtr() { mPtr = nullptr; }
};
}
void
ThreadStackHelper::GetStack(Stack& aStack)
{
@ -118,6 +130,8 @@ ThreadStackHelper::GetStack(Stack& aStack)
return;
}
ScopedSetPtr<Stack> stackPtr(mStackToFill, &aStack);
#if defined(XP_LINUX)
if (!sInitialized) {
MOZ_ASSERT(false);
@ -199,7 +213,6 @@ ThreadStackHelper::PrepareStackBuffer(Stack& aStack)
!aStack.EnsureBufferCapacity(mMaxBufferSize)) {
return false;
}
mStackToFill = &aStack;
return true;
#else
return false;