diff --git a/src/backend/utils/adt/numutils.c b/src/backend/utils/adt/numutils.c
index 3b0d000365a2d1ad34287f751a1fe89774f5ebb0..fb7fd94b8c8da5fed2bfbddd023c66df7dbc663b 100644
--- a/src/backend/utils/adt/numutils.c
+++ b/src/backend/utils/adt/numutils.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/utils/adt/numutils.c,v 1.67 2004/12/31 22:01:22 pgsql Exp $
+ *	  $PostgreSQL: pgsql/src/backend/utils/adt/numutils.c,v 1.68 2005/01/09 21:03:19 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -46,12 +46,12 @@
 /*
  * pg_atoi: convert string to integer
  *
- * 'size' is the sizeof() the desired integral result (1, 2, or 4 bytes).
- *
  * allows any number of leading or trailing whitespace characters.
  *
- * 'c' is the character that terminates the input string (after any
- * number of whitespace characters).
+ * 'size' is the sizeof() the desired integral result (1, 2, or 4 bytes).
+ *
+ * c, if not 0, is a terminator character that may appear after the
+ * integer (plus whitespace).  If 0, the string must end after the integer.
  *
  * Unlike plain atoi(), this will throw ereport() upon bad input format or
  * overflow.
@@ -88,10 +88,10 @@ pg_atoi(char *s, int size, int c)
 	 * Skip any trailing whitespace; if anything but whitespace remains
 	 * before the terminating character, bail out
 	 */
-	while (*badp != c && isspace((unsigned char) *badp))
+	while (*badp && *badp != c && isspace((unsigned char) *badp))
 		badp++;
 
-	if (*badp != c)
+	if (*badp && *badp != c)
 		ereport(ERROR,
 				(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
 				 errmsg("invalid input syntax for integer: \"%s\"",