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
}
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;