mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-22 15:23:03 +01:00
Fix a crash appeared after the bugfix for #8185 (SIGSEGV with WHERE CURRENT OF statement with statement cache turned on). Reproducible with QA test bugs.core_5231 (release build only). This fix is a very simple one, just to avoid the object state being read after its possible removal. The returned usage counter is not used anyway.
This commit is contained in:
parent
fe178a1404
commit
69690fd44e
@ -56,17 +56,15 @@ void DsqlStatement::rethrowDdlException(status_exception& ex, bool metadataUpdat
|
|||||||
status_exception::raise(newVector);
|
status_exception::raise(newVector);
|
||||||
}
|
}
|
||||||
|
|
||||||
int DsqlStatement::release()
|
void DsqlStatement::release()
|
||||||
{
|
{
|
||||||
fb_assert(refCounter.value() > 0);
|
fb_assert(refCounter.value() > 0);
|
||||||
int refCnt = --refCounter;
|
|
||||||
|
|
||||||
if (!refCnt)
|
if (!--refCounter)
|
||||||
{
|
{
|
||||||
if (cacheKey)
|
if (cacheKey)
|
||||||
{
|
{
|
||||||
dsqlAttachment->dbb_statement_cache->statementGoingInactive(cacheKey);
|
dsqlAttachment->dbb_statement_cache->statementGoingInactive(cacheKey);
|
||||||
refCnt = refCounter;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -74,8 +72,6 @@ int DsqlStatement::release()
|
|||||||
dsqlAttachment->deletePool(&getPool());
|
dsqlAttachment->deletePool(&getPool());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return refCnt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DsqlStatement::doRelease()
|
void DsqlStatement::doRelease()
|
||||||
|
@ -83,12 +83,12 @@ protected:
|
|||||||
virtual ~DsqlStatement() = default;
|
virtual ~DsqlStatement() = default;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int addRef()
|
void addRef()
|
||||||
{
|
{
|
||||||
return ++refCounter;
|
++refCounter;
|
||||||
}
|
}
|
||||||
|
|
||||||
int release();
|
void release();
|
||||||
|
|
||||||
bool isCursorBased() const
|
bool isCursorBased() const
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user