From a323ede2802956f115d71599514fbc01f2575dee Mon Sep 17 00:00:00 2001
From: Neil Conway <neilc@samurai.com>
Date: Sun, 19 Mar 2006 22:22:56 +0000
Subject: [PATCH] Fix a few places that were checking for the return value of
 palloc() to be non-NULL: palloc() ereports on OOM, so we can safely assume it
 returns a valid pointer.

---
 contrib/chkpass/chkpass.c             | 18 +++++++-----------
 contrib/fuzzystrmatch/fuzzystrmatch.c |  6 +-----
 src/backend/utils/adt/cash.c          | 13 +++----------
 src/pl/plperl/SPI.xs                  |  6 ------
 src/pl/plperl/plperl.c                |  6 +-----
 5 files changed, 12 insertions(+), 37 deletions(-)

diff --git a/contrib/chkpass/chkpass.c b/contrib/chkpass/chkpass.c
index 8b77fb2a3a0..e20164eed2b 100644
--- a/contrib/chkpass/chkpass.c
+++ b/contrib/chkpass/chkpass.c
@@ -4,7 +4,7 @@
  * darcy@druid.net
  * http://www.druid.net/darcy/
  *
- * $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.14 2005/10/15 02:49:04 momjian Exp $
+ * $PostgreSQL: pgsql/contrib/chkpass/chkpass.c,v 1.15 2006/03/19 22:22:55 neilc Exp $
  * best viewed with tabs set to 4
  */
 
@@ -108,11 +108,9 @@ chkpass_out(PG_FUNCTION_ARGS)
 	chkpass    *password = (chkpass *) PG_GETARG_POINTER(0);
 	char	   *result;
 
-	if ((result = (char *) palloc(16)) != NULL)
-	{
-		result[0] = ':';
-		strcpy(result + 1, password->password);
-	}
+	result = (char *) palloc(16);
+	result[0] = ':';
+	strcpy(result + 1, password->password);
 
 	PG_RETURN_CSTRING(result);
 }
@@ -129,11 +127,9 @@ chkpass_rout(PG_FUNCTION_ARGS)
 	chkpass    *password = (chkpass *) PG_GETARG_POINTER(0);
 	text	   *result;
 
-	if ((result = (text *) palloc(VARHDRSZ + 16)) != NULL)
-	{
-		result->vl_len = VARHDRSZ + strlen(password->password);
-		memcpy(result->vl_dat, password->password, strlen(password->password));
-	}
+	result = (text *) palloc(VARHDRSZ + 16);
+	result->vl_len = VARHDRSZ + strlen(password->password);
+	memcpy(result->vl_dat, password->password, strlen(password->password));
 
 	PG_RETURN_TEXT_P(result);
 }
diff --git a/contrib/fuzzystrmatch/fuzzystrmatch.c b/contrib/fuzzystrmatch/fuzzystrmatch.c
index 64b6c41b425..29bba52596c 100644
--- a/contrib/fuzzystrmatch/fuzzystrmatch.c
+++ b/contrib/fuzzystrmatch/fuzzystrmatch.c
@@ -5,7 +5,7 @@
  *
  * Joe Conway <mail@joeconway.com>
  *
- * $PostgreSQL: pgsql/contrib/fuzzystrmatch/fuzzystrmatch.c,v 1.19 2006/03/11 04:38:29 momjian Exp $
+ * $PostgreSQL: pgsql/contrib/fuzzystrmatch/fuzzystrmatch.c,v 1.20 2006/03/19 22:22:56 neilc Exp $
  * Copyright (c) 2001-2006, PostgreSQL Global Development Group
  * ALL RIGHTS RESERVED;
  *
@@ -347,14 +347,10 @@ _metaphone(
 	if (max_phonemes == 0)
 	{							/* Assume largest possible */
 		*phoned_word = palloc(sizeof(char) * strlen(word) +1);
-		if (!*phoned_word)
-			return META_ERROR;
 	}
 	else
 	{
 		*phoned_word = palloc(sizeof(char) * max_phonemes + 1);
-		if (!*phoned_word)
-			return META_ERROR;
 	}
 
 	/*-- The first phoneme has to be processed specially. --*/
diff --git a/src/backend/utils/adt/cash.c b/src/backend/utils/adt/cash.c
index f9e2f10325a..a57cba0073a 100644
--- a/src/backend/utils/adt/cash.c
+++ b/src/backend/utils/adt/cash.c
@@ -9,7 +9,7 @@
  * workings can be found in the book "Software Solutions in C" by
  * Dale Schumacher, Academic Press, ISBN: 0-12-632360-7.
  *
- * $PostgreSQL: pgsql/src/backend/utils/adt/cash.c,v 1.66 2005/10/15 02:49:28 momjian Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/cash.c,v 1.67 2006/03/19 22:22:56 neilc Exp $
  */
 
 #include "postgres.h"
@@ -291,10 +291,7 @@ cash_out(PG_FUNCTION_ARGS)
 	/* see if we need to signify negative amount */
 	if (minus)
 	{
-		if (!PointerIsValid(result = palloc(CASH_BUFSZ + 2 - count + strlen(nsymbol))))
-			ereport(ERROR,
-					(errcode(ERRCODE_OUT_OF_MEMORY),
-					 errmsg("out of memory")));
+		result = palloc(CASH_BUFSZ + 2 - count + strlen(nsymbol));
 
 		/* Position code of 0 means use parens */
 		if (convention == 0)
@@ -306,11 +303,7 @@ cash_out(PG_FUNCTION_ARGS)
 	}
 	else
 	{
-		if (!PointerIsValid(result = palloc(CASH_BUFSZ + 2 - count)))
-			ereport(ERROR,
-					(errcode(ERRCODE_OUT_OF_MEMORY),
-					 errmsg("out of memory")));
-
+		result = palloc(CASH_BUFSZ + 2 - count);
 		strcpy(result, buf + count);
 	}
 
diff --git a/src/pl/plperl/SPI.xs b/src/pl/plperl/SPI.xs
index 738cbb61842..967ac0adbab 100644
--- a/src/pl/plperl/SPI.xs
+++ b/src/pl/plperl/SPI.xs
@@ -151,8 +151,6 @@ spi_spi_prepare(query, ...)
 		if (items < 1) 
 			Perl_croak(aTHX_ "Usage: spi_prepare(query, ...)");
 		argv = ( SV**) palloc(( items - 1) * sizeof(SV*));
-		if ( argv == NULL) 
-			Perl_croak(aTHX_ "spi_prepare: not enough memory");
 		for ( i = 1; i < items; i++) 
 			argv[i - 1] = ST(i);
 		RETVAL = plperl_spi_prepare(query, items - 1, argv);
@@ -179,8 +177,6 @@ spi_spi_exec_prepared(query, ...)
 		}
 		argc = items - offset;
 		argv = ( SV**) palloc( argc * sizeof(SV*));
-		if ( argv == NULL) 
-			Perl_croak(aTHX_ "spi_exec_prepared: not enough memory");
 		for ( i = 0; offset < items; offset++, i++) 
 			argv[i] = ST(offset);
 		ret_hash = plperl_spi_exec_prepared(query, attr, argc, argv);
@@ -199,8 +195,6 @@ spi_spi_query_prepared(query, ...)
 			Perl_croak(aTHX_ "Usage: spi_query_prepared(query, "
 					   "[\\@bind_values])");
 		argv = ( SV**) palloc(( items - 1) * sizeof(SV*));
-		if ( argv == NULL) 
-			Perl_croak(aTHX_ "spi_query_prepared: not enough memory");
 		for ( i = 1; i < items; i++) 
 			argv[i - 1] = ST(i);
 		RETVAL = plperl_spi_query_prepared(query, items - 1, argv);
diff --git a/src/pl/plperl/plperl.c b/src/pl/plperl/plperl.c
index 362bf774725..0524d9ebe4e 100644
--- a/src/pl/plperl/plperl.c
+++ b/src/pl/plperl/plperl.c
@@ -1,7 +1,7 @@
 /**********************************************************************
  * plperl.c - perl as a procedural language for PostgreSQL
  *
- *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.106 2006/03/14 22:48:23 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.107 2006/03/19 22:22:56 neilc Exp $
  *
  **********************************************************************/
 
@@ -2122,8 +2122,6 @@ plperl_spi_exec_prepared(char* query, HV * attr, int argc, SV ** argv)
 		{
 			nulls = (char *)palloc( argc);
 			argvalues = (Datum *) palloc(argc * sizeof(Datum));
-			if ( nulls == NULL || argvalues == NULL) 
-				elog(ERROR, "spi_exec_prepared: not enough memory");
 		} 
 		else 
 		{
@@ -2253,8 +2251,6 @@ plperl_spi_query_prepared(char* query, int argc, SV ** argv)
 		{
 			nulls = (char *)palloc( argc);
 			argvalues = (Datum *) palloc(argc * sizeof(Datum));
-			if ( nulls == NULL || argvalues == NULL) 
-				elog(ERROR, "spi_query_prepared: not enough memory");
 		} 
 		else 
 		{
-- 
GitLab