8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-23 08:03:04 +01:00

Fixed stack overflow reason as shown by failed fbt test for core-4653.

This commit is contained in:
Vlad Khorsun 2022-09-07 13:26:08 +03:00
parent 92ae3c8f13
commit ef975036dd
2 changed files with 45 additions and 36 deletions

View File

@ -417,6 +417,8 @@ namespace Jrd
bool internalGetRecord(thread_db* tdbb) const override;
private:
void process(thread_db* tdbb) const;
NestConst<RecordSource> m_next;
StreamList m_streams;
};

View File

@ -87,6 +87,18 @@ bool SingularStream::internalGetRecord(thread_db* tdbb) const
if (m_next->getRecord(tdbb))
{
process(tdbb);
return true;
}
return false;
}
void SingularStream::process(thread_db* tdbb) const
{
Request* const request = tdbb->getRequest();
Impure* const impure = request->getImpure<Impure>(m_impure);
const FB_SIZE_T streamCount = m_streams.getCount();
MemoryPool& pool = *tdbb->getDefaultPool();
HalfStaticArray<record_param, 16> rpbs(pool, streamCount);
@ -122,11 +134,6 @@ bool SingularStream::internalGetRecord(thread_db* tdbb) const
}
impure->irsb_flags |= irsb_singular_processed;
return true;
}
return false;
}
bool SingularStream::refetchRecord(thread_db* tdbb) const