mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 14:03:07 +01:00
Fixed stack overflow reason as shown by failed fbt test for core-4653.
This commit is contained in:
parent
92ae3c8f13
commit
ef975036dd
@ -417,6 +417,8 @@ namespace Jrd
|
|||||||
bool internalGetRecord(thread_db* tdbb) const override;
|
bool internalGetRecord(thread_db* tdbb) const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void process(thread_db* tdbb) const;
|
||||||
|
|
||||||
NestConst<RecordSource> m_next;
|
NestConst<RecordSource> m_next;
|
||||||
StreamList m_streams;
|
StreamList m_streams;
|
||||||
};
|
};
|
||||||
|
@ -87,6 +87,18 @@ bool SingularStream::internalGetRecord(thread_db* tdbb) const
|
|||||||
|
|
||||||
if (m_next->getRecord(tdbb))
|
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();
|
const FB_SIZE_T streamCount = m_streams.getCount();
|
||||||
MemoryPool& pool = *tdbb->getDefaultPool();
|
MemoryPool& pool = *tdbb->getDefaultPool();
|
||||||
HalfStaticArray<record_param, 16> rpbs(pool, streamCount);
|
HalfStaticArray<record_param, 16> rpbs(pool, streamCount);
|
||||||
@ -122,11 +134,6 @@ bool SingularStream::internalGetRecord(thread_db* tdbb) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
impure->irsb_flags |= irsb_singular_processed;
|
impure->irsb_flags |= irsb_singular_processed;
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SingularStream::refetchRecord(thread_db* tdbb) const
|
bool SingularStream::refetchRecord(thread_db* tdbb) const
|
||||||
|
Loading…
Reference in New Issue
Block a user