mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-02-02 10:00:38 +01:00
Fixed #7703: Requests leak in AutoCacheRequest
This commit is contained in:
parent
137e997ad3
commit
c1e58febd4
@ -1719,3 +1719,29 @@ static void trigger_failure(thread_db* tdbb, Request* trigger)
|
||||
ERR_punt();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void AutoCacheRequest::cacheRequest()
|
||||
{
|
||||
thread_db* tdbb = JRD_get_thread_data();
|
||||
Attachment* att = tdbb->getAttachment();
|
||||
|
||||
Statement** stmt = which == IRQ_REQUESTS ? &att->att_internal[id] :
|
||||
which == DYN_REQUESTS ? &att->att_dyn_req[id] : nullptr;
|
||||
if (!stmt)
|
||||
{
|
||||
fb_assert(false);
|
||||
return;
|
||||
}
|
||||
|
||||
if (*stmt)
|
||||
{
|
||||
// self resursive call already filled cache
|
||||
request->getStatement()->release(tdbb);
|
||||
request = att->findSystemRequest(tdbb, id, which);
|
||||
fb_assert(request);
|
||||
}
|
||||
else
|
||||
*stmt = request->getStatement();
|
||||
}
|
||||
|
||||
|
@ -124,19 +124,7 @@ namespace Jrd
|
||||
}
|
||||
}
|
||||
|
||||
inline void cacheRequest()
|
||||
{
|
||||
Jrd::Attachment* att = JRD_get_thread_data()->getAttachment();
|
||||
|
||||
if (which == IRQ_REQUESTS)
|
||||
att->att_internal[id] = request->getStatement();
|
||||
else if (which == DYN_REQUESTS)
|
||||
att->att_dyn_req[id] = request->getStatement();
|
||||
else
|
||||
{
|
||||
fb_assert(false);
|
||||
}
|
||||
}
|
||||
void cacheRequest();
|
||||
|
||||
private:
|
||||
USHORT id;
|
||||
|
Loading…
Reference in New Issue
Block a user