aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/transam/xlog.c
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2015-04-03 21:55:37 +0900
committerFujii Masao <fujii@postgresql.org>2015-04-03 21:55:37 +0900
commit6e4bf4ecd3c2a266870139462a079809dfe7ab8c (patch)
tree8e363162645de6b1826003944e3b9a93e1a28e26 /src/backend/access/transam/xlog.c
parentf85155e18cb71a599724536e598e8d6f5e140454 (diff)
downloadpostgresql-6e4bf4ecd3c2a266870139462a079809dfe7ab8c.tar.gz
postgresql-6e4bf4ecd3c2a266870139462a079809dfe7ab8c.zip
Fix error handling of XLogReaderAllocate in case of OOM
Similarly to previous fix 9b8d478, commit 2c03216 has switched XLogReaderAllocate() to use a set of palloc calls instead of malloc, causing any callers of this function to fail with an error instead of receiving a NULL pointer in case of out-of-memory error. Fix this by using palloc_extended with MCXT_ALLOC_NO_OOM that will safely return NULL in case of an OOM. Michael Paquier, slightly modified by me.
Diffstat (limited to 'src/backend/access/transam/xlog.c')
-rw-r--r--src/backend/access/transam/xlog.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 346a2b39f85..24cf520e579 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -1062,8 +1062,11 @@ XLogInsertRecord(XLogRecData *rdata, XLogRecPtr fpw_lsn)
if (!debug_reader)
debug_reader = XLogReaderAllocate(NULL, NULL);
- if (!debug_reader ||
- !DecodeXLogRecord(debug_reader, (XLogRecord *) recordBuf.data,
+ if (!debug_reader)
+ {
+ appendStringInfo(&buf, "error decoding record: out of memory");
+ }
+ else if (!DecodeXLogRecord(debug_reader, (XLogRecord *) recordBuf.data,
&errormsg))
{
appendStringInfo(&buf, "error decoding record: %s",