MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / cleanupLevel

Method cleanupLevel

src/jrd/recsrc/RecursiveStream.cpp:307–332  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

305}
306
307void RecursiveStream::cleanupLevel(Request* request, Impure* impure) const
308{
309 Impure* const saveImpure = request->getImpure<Impure>(m_saveOffset);
310
311 delete[] impure->irsb_data;
312
313 UCHAR* const tmp = impure->irsb_stack;
314 memcpy(saveImpure, tmp, m_saveSize);
315
316 const UCHAR* p = tmp + m_saveSize;
317
318 for (FB_SIZE_T i = 0; i < m_innerStreams.getCount(); i++)
319 {
320 const StreamType stream = m_innerStreams[i];
321 record_param* const rpb = &request->req_rpb[stream];
322 Record* const tempRecord = rpb->rpb_record;
323 memmove(rpb, p, sizeof(record_param));
324 p += sizeof(record_param);
325
326 // We just restored record of current recursion level, delete record
327 // from upper level. It may be optimized in the future if needed.
328 delete tempRecord;
329 }
330
331 delete[] tmp;
332}

Callers

nothing calls this directly

Calls 1

getCountMethod · 0.45

Tested by

no test coverage detected