Skip to content
Snippets Groups Projects
Commit 9b8d4782 authored by Fujii Masao's avatar Fujii Masao
Browse files

Rework handling of OOM when allocating record buffer in XLOG reader.

Commit 2c03216d changed allocate_recordbuf() so that it uses a palloc to
allocate the read buffer and fails immediately when an out-of-memory error
shows up, even though its callers still expect that NULL is returned in that
case. This bug is fixed making allocate_recordbuf() use a palloc_extended
with MCXT_ALLOC_NO_OOM flag and return NULL in OOM case.

Michael Paquier
parent 8c8a8862
Branches
Tags
No related merge requests found
...@@ -146,7 +146,13 @@ allocate_recordbuf(XLogReaderState *state, uint32 reclength) ...@@ -146,7 +146,13 @@ allocate_recordbuf(XLogReaderState *state, uint32 reclength)
if (state->readRecordBuf) if (state->readRecordBuf)
pfree(state->readRecordBuf); pfree(state->readRecordBuf);
state->readRecordBuf = (char *) palloc(newSize); state->readRecordBuf =
(char *) palloc_extended(newSize, MCXT_ALLOC_NO_OOM);
if (state->readRecordBuf == NULL)
{
state->readRecordBufSize = 0;
return false;
}
state->readRecordBufSize = newSize; state->readRecordBufSize = newSize;
return true; return true;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment