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 408ddbce7d
commit 39ee7fe82e

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;