mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-24 19:23:02 +01:00
Fixed CORE-1958: Bugcheck 179 (decompression overran buffer) when attempting to update the same record multiple times.
This commit is contained in:
parent
f41a7c9a9d
commit
fe2e2ed3a3
@ -2540,7 +2540,6 @@ Record* VIO_record(thread_db* tdbb, record_param* rpb, const Format* format,
|
|||||||
pool = dbb->dbb_permanent;
|
pool = dbb->dbb_permanent;
|
||||||
}
|
}
|
||||||
record = rpb->rpb_record = FB_NEW_RPT(*pool, format->fmt_length) Record(*pool);
|
record = rpb->rpb_record = FB_NEW_RPT(*pool, format->fmt_length) Record(*pool);
|
||||||
record->rec_length = format->fmt_length;
|
|
||||||
}
|
}
|
||||||
else if (record->rec_length < format->fmt_length) {
|
else if (record->rec_length < format->fmt_length) {
|
||||||
Record* const old = record;
|
Record* const old = record;
|
||||||
@ -2552,13 +2551,13 @@ Record* VIO_record(thread_db* tdbb, record_param* rpb, const Format* format,
|
|||||||
else
|
else
|
||||||
record = realloc_record(rpb->rpb_record, format->fmt_length);
|
record = realloc_record(rpb->rpb_record, format->fmt_length);
|
||||||
|
|
||||||
record->rec_length = format->fmt_length;
|
|
||||||
if (rpb->rpb_prior == old) {
|
if (rpb->rpb_prior == old) {
|
||||||
rpb->rpb_prior = record;
|
rpb->rpb_prior = record;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
record->rec_format = format;
|
record->rec_format = format;
|
||||||
|
record->rec_length = format->fmt_length;
|
||||||
|
|
||||||
return record;
|
return record;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user