diff --git a/src/backend/utils/adt/numutils.c b/src/backend/utils/adt/numutils.c
index b30b2fe557b6e34da9ce9e0e3d0552f40c97e55e..2dd6e5db9e10aff90a41fada7edba48b6409b5ca 100644
--- a/src/backend/utils/adt/numutils.c
+++ b/src/backend/utils/adt/numutils.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.26 1998/09/01 04:32:43 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/numutils.c,v 1.27 1998/09/12 16:04:35 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -55,8 +55,19 @@ pg_atoi(char *s, int size, int c)
 
 	Assert(s);
 
-	errno = 0;
-	l = strtol(s, &badp, 10);
+  	errno = 0;
+
+	/*
+	 * Some versions of strtol treat the empty string as an error.  This
+	 * code will explicitly return 0 for an empty string.
+	 */
+
+	if (s == (char *)NULL)
+		elog(ERROR, "pg_atoi: NULL pointer!");
+	else if (*s == 0)
+		l = (long)0;
+	else
+		l = strtol(s, &badp, 10);
 	if (errno)					/* strtol must set ERANGE */
 		elog(ERROR, "pg_atoi: error reading \"%s\": %m", s);
 	if (badp && *badp && (*badp != c))