summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/misc/guc.c6
-rw-r--r--src/bin/initdb/initdb.c3
-rw-r--r--src/bin/pg_basebackup/streamutil.c3
-rw-r--r--src/bin/pg_ctl/pg_ctl.c3
-rw-r--r--src/bin/pg_dump/dumpmem.c6
-rw-r--r--src/bin/psql/common.c3
-rw-r--r--src/bin/scripts/common.c3
-rw-r--r--src/port/dirmod.c12
8 files changed, 37 insertions, 2 deletions
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index 48652b21ea4..6b202e04256 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -3358,6 +3358,9 @@ guc_malloc(int elevel, size_t size)
{
void *data;
+ /* Avoid unportable behavior of malloc(0) */
+ if (size == 0)
+ size = 1;
data = malloc(size);
if (data == NULL)
ereport(elevel,
@@ -3371,6 +3374,9 @@ guc_realloc(int elevel, void *old, size_t size)
{
void *data;
+ /* Avoid unportable behavior of realloc(NULL, 0) */
+ if (old == NULL && size == 0)
+ size = 1;
data = realloc(old, size);
if (data == NULL)
ereport(elevel,
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 11ff554d795..c56f721e08f 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -294,6 +294,9 @@ pg_malloc(size_t size)
{
void *result;
+ /* Avoid unportable behavior of malloc(0) */
+ if (size == 0)
+ size = 1;
result = malloc(size);
if (!result)
{
diff --git a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c
index b6cc2a303e9..22f41281808 100644
--- a/src/bin/pg_basebackup/streamutil.c
+++ b/src/bin/pg_basebackup/streamutil.c
@@ -54,6 +54,9 @@ pg_malloc0(size_t size)
{
void *result;
+ /* Avoid unportable behavior of malloc(0) */
+ if (size == 0)
+ size = 1;
result = malloc(size);
if (!result)
{
diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 6d74a154ab1..23c47f62752 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -233,6 +233,9 @@ pg_malloc(size_t size)
{
void *result;
+ /* Avoid unportable behavior of malloc(0) */
+ if (size == 0)
+ size = 1;
result = malloc(size);
if (!result)
{
diff --git a/src/bin/pg_dump/dumpmem.c b/src/bin/pg_dump/dumpmem.c
index 22637e26e48..08e82b269dc 100644
--- a/src/bin/pg_dump/dumpmem.c
+++ b/src/bin/pg_dump/dumpmem.c
@@ -42,6 +42,9 @@ pg_malloc(size_t size)
{
void *tmp;
+ /* Avoid unportable behavior of malloc(0) */
+ if (size == 0)
+ size = 1;
tmp = malloc(size);
if (!tmp)
exit_horribly(NULL, "out of memory\n");
@@ -63,6 +66,9 @@ pg_realloc(void *ptr, size_t size)
{
void *tmp;
+ /* Avoid unportable behavior of realloc(NULL, 0) */
+ if (ptr == NULL && size == 0)
+ size = 1;
tmp = realloc(ptr, size);
if (!tmp)
exit_horribly(NULL, "out of memory\n");
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index 1cb30088c48..179c1622793 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -60,6 +60,9 @@ pg_malloc(size_t size)
{
void *tmp;
+ /* Avoid unportable behavior of malloc(0) */
+ if (size == 0)
+ size = 1;
tmp = malloc(size);
if (!tmp)
{
diff --git a/src/bin/scripts/common.c b/src/bin/scripts/common.c
index 4a7d02f7771..7d8875d81cd 100644
--- a/src/bin/scripts/common.c
+++ b/src/bin/scripts/common.c
@@ -304,6 +304,9 @@ pg_malloc(size_t size)
{
void *tmp;
+ /* Avoid unportable behavior of malloc(0) */
+ if (size == 0)
+ size = 1;
tmp = malloc(size);
if (!tmp)
{
diff --git a/src/port/dirmod.c b/src/port/dirmod.c
index 22f5c591b07..514424f82e6 100644
--- a/src/port/dirmod.c
+++ b/src/port/dirmod.c
@@ -70,7 +70,11 @@ fe_palloc(Size size)
{
void *res;
- if ((res = malloc(size)) == NULL)
+ /* Avoid unportable behavior of malloc(0) */
+ if (size == 0)
+ size = 1;
+ res = malloc(size);
+ if (res == NULL)
{
fprintf(stderr, _("out of memory\n"));
exit(1);
@@ -96,7 +100,11 @@ fe_repalloc(void *pointer, Size size)
{
void *res;
- if ((res = realloc(pointer, size)) == NULL)
+ /* Avoid unportable behavior of realloc(NULL, 0) */
+ if (pointer == NULL && size == 0)
+ size = 1;
+ res = realloc(pointer, size);
+ if (res == NULL)
{
fprintf(stderr, _("out of memory\n"));
exit(1);