From 58acfb9857747aa076d5626ccf1f7b7ce050e63d Mon Sep 17 00:00:00 2001 From: Sandu Liviu Catalin Date: Tue, 23 Oct 2018 22:28:09 +0300 Subject: [PATCH] Make a few midifications to StackStrF. --- include/sqrat/sqratUtil.h | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/include/sqrat/sqratUtil.h b/include/sqrat/sqratUtil.h index 74a5b05b..0dd533cb 100644 --- a/include/sqrat/sqratUtil.h +++ b/include/sqrat/sqratUtil.h @@ -1580,7 +1580,7 @@ struct StackStrF /// Base constructor. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// StackStrF(HSQUIRRELVM vm, SQInteger idx) - : mPtr(nullptr) + : mPtr(_SC("")) , mLen(SQ_ERROR) , mRes(SQ_OK) , mObj() @@ -1605,7 +1605,7 @@ struct StackStrF , mVM(o.mVM) , mIdx(o.mIdx) { - o.mPtr = nullptr; + o.mPtr = _SC(""); o.mLen = 0; o.mRes = SQ_OK; o.mVM = nullptr; @@ -1618,9 +1618,9 @@ struct StackStrF ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ~StackStrF() { - if (mVM && !sq_isnull(mObj)) + if (!sq_isnull(mObj)) { - sq_release(mVM, &mObj); + sq_release(mVM ? mVM : DefaultVM::Get(), &mObj); } } @@ -1634,6 +1634,23 @@ struct StackStrF ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// StackStrF & operator = (StackStrF && o) = delete; + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /// Release any object references. + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + void Release() + { + if (!sq_isnull(mObj)) + { + sq_release(mVM ? mVM : DefaultVM::Get(), &mObj); + } + mPtr = _SC(""); + mLen = 0; + mRes = SQ_OK; + mVM = nullptr; + mIdx = -1; + sq_resetobject(&mObj); + } + ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /// Actual implementation. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////