diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/parser/scan.l | 13 | ||||
-rw-r--r-- | src/backend/utils/adt/float.c | 4 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/backend/parser/scan.l b/src/backend/parser/scan.l index 605d940dc9a..4ea2fc2e812 100644 --- a/src/backend/parser/scan.l +++ b/src/backend/parser/scan.l @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.9 1997/02/14 04:15:59 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/scan.l,v 1.10 1997/02/19 20:10:38 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -20,6 +20,7 @@ #include <stdlib.h> #endif /* __linux__ */ #include <string.h> +#include <errno.h> #include "postgres.h" #include "miscadmin.h" @@ -30,6 +31,7 @@ #include "parser/scansup.h" #include "parser/sysfunc.h" #include "parse.h" +#include "utils/builtins.h" extern char *parseString; extern char *parseCh; @@ -109,8 +111,13 @@ other . return (ICONST); } {real} { - yylval.dval = atof((char*)yytext); - return (FCONST); + char* endptr; + errno = 0; + yylval.dval = strtod(((char *)yytext),&endptr); + if (*endptr != '\0' || errno == ERANGE) + elog(WARN,"\tBad float8 input format\n"); + CheckFloat8Val(yylval.dval); + return (FCONST); } {quote} { char literal[MAX_PARSE_BUFFER]; diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c index 3c934003d19..52fc5f98e3a 100644 --- a/src/backend/utils/adt/float.c +++ b/src/backend/utils/adt/float.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.11 1997/02/14 04:17:52 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.12 1997/02/19 20:10:49 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -127,7 +127,7 @@ static void CheckFloat4Val(double val) raise an elog warning if it is */ -static void CheckFloat8Val(double val) +void CheckFloat8Val(double val) { /* defining unsafe floats's will make float4 and float8 ops faster at the cost of safety, of course! */ |