Skip to content

Commit 69690fd

Browse files
committed
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.
1 parent fe178a1 commit 69690fd

File tree

2 files changed

+5
-9
lines changed

2 files changed

+5
-9
lines changed

src/dsql/DsqlStatements.cpp

+2-6
Original file line numberDiff line numberDiff line change
@@ -56,26 +56,22 @@ void DsqlStatement::rethrowDdlException(status_exception& ex, bool metadataUpdat
5656
status_exception::raise(newVector);
5757
}
5858

59-
int DsqlStatement::release()
59+
void DsqlStatement::release()
6060
{
6161
fb_assert(refCounter.value() > 0);
62-
int refCnt = --refCounter;
6362

64-
if (!refCnt)
63+
if (!--refCounter)
6564
{
6665
if (cacheKey)
6766
{
6867
dsqlAttachment->dbb_statement_cache->statementGoingInactive(cacheKey);
69-
refCnt = refCounter;
7068
}
7169
else
7270
{
7371
doRelease();
7472
dsqlAttachment->deletePool(&getPool());
7573
}
7674
}
77-
78-
return refCnt;
7975
}
8076

8177
void DsqlStatement::doRelease()

src/dsql/DsqlStatements.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,12 @@ class DsqlStatement : public Firebird::PermanentStorage
8383
virtual ~DsqlStatement() = default;
8484

8585
public:
86-
int addRef()
86+
void addRef()
8787
{
88-
return ++refCounter;
88+
++refCounter;
8989
}
9090

91-
int release();
91+
void release();
9292

9393
bool isCursorBased() const
9494
{

0 commit comments

Comments
 (0)