From: Tom Lane Date: Wed, 30 Nov 2005 23:10:16 +0000 (+0000) Subject: Rearrange code in pg_atoi() to avoid assuming that isspace() cannot X-Git-Tag: REL8_1_1~50 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=29ebf0df8128e51365f58be8c1c335542f400320;p=postgresql Rearrange code in pg_atoi() to avoid assuming that isspace() cannot change errno. No reported bugs here, but why take a chance? --- diff --git a/src/backend/utils/adt/numutils.c b/src/backend/utils/adt/numutils.c index ffa225277e..34f26da79b 100644 --- a/src/backend/utils/adt/numutils.c +++ b/src/backend/utils/adt/numutils.c @@ -10,13 +10,12 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/numutils.c,v 1.69 2005/10/15 02:49:29 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/numutils.c,v 1.69.2.1 2005/11/30 23:10:16 tgl Exp $ * *------------------------------------------------------------------------- */ #include "postgres.h" -#include #include #include #include @@ -84,19 +83,6 @@ pg_atoi(char *s, int size, int c) errmsg("invalid input syntax for integer: \"%s\"", s))); - /* - * Skip any trailing whitespace; if anything but whitespace remains before - * the terminating character, bail out - */ - while (*badp && *badp != c && isspace((unsigned char) *badp)) - badp++; - - if (*badp && *badp != c) - ereport(ERROR, - (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), - errmsg("invalid input syntax for integer: \"%s\"", - s))); - switch (size) { case sizeof(int32): @@ -125,6 +111,20 @@ pg_atoi(char *s, int size, int c) default: elog(ERROR, "unsupported result size: %d", size); } + + /* + * Skip any trailing whitespace; if anything but whitespace remains before + * the terminating character, bail out + */ + while (*badp && *badp != c && isspace((unsigned char) *badp)) + badp++; + + if (*badp && *badp != c) + ereport(ERROR, + (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), + errmsg("invalid input syntax for integer: \"%s\"", + s))); + return (int32) l; }