aboutsummaryrefslogtreecommitdiff
path: root/src/backend/replication/logical/logical.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/replication/logical/logical.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/replication/logical/logical.c')
-rw-r--r--src/backend/replication/logical/logical.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/backend/replication/logical/logical.c b/src/backend/replication/logical/logical.c
index 30baa45383a..774ebbc749c 100644
--- a/src/backend/replication/logical/logical.c
+++ b/src/backend/replication/logical/logical.c
@@ -163,6 +163,11 @@ StartupDecodingContext(List *output_plugin_options,
ctx->slot = slot;
ctx->reader = XLogReaderAllocate(read_page, ctx);
+ if (!ctx->reader)
+ ereport(ERROR,
+ (errcode(ERRCODE_OUT_OF_MEMORY),
+ errmsg("out of memory")));
+
ctx->reader->private_data = ctx;
ctx->reorder = ReorderBufferAllocate();