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

This commit is contained in:
Jim Chen 2014-07-28 13:30:20 -04:00
Родитель f98cb3b0c2
Коммит e15783a41a
1 изменённых файлов: 14 добавлений и 1 удалений

Просмотреть файл

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