Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meskes2001-04-02 08:17:24 +0000
committerMichael Meskes2001-04-02 08:17:24 +0000
commite6851f056a8f8f87dd17f3559f77a53f9526cf72 (patch)
treee3073a7d96bd867fb4b32ad72689c0af3b59ff2f
parentba8b844f5afd661379bad00c1969c14f12cdb068 (diff)
Synced pgc.l with scan.l.
-rw-r--r--src/interfaces/ecpg/ChangeLog6
-rw-r--r--src/interfaces/ecpg/preproc/pgc.l24
2 files changed, 24 insertions, 6 deletions
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 4d8f038ce26..41c07a43ecd 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -1060,8 +1060,12 @@ Mon Feb 26 15:22:04 CET 2001
- Fixed misplaced variables FoundInto and QueryIsRule.
-Don Mar 29 10:23:05 CEST 2001
+Thu Mar 29 10:23:05 CEST 2001
- Applied bug fix in ecpgtype.h by Adriaan Joubert.
+
+Mon Apr 2 10:16:10 CEST 2001
+
+ - Synced scan.l and pgc.l.
- Set ecpg version to 2.8.0.
- Set library version to 3.2.0.
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index e8896e3cc60..6c05ccf32e5 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.77 2001/02/21 18:53:47 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.78 2001/04/02 08:17:24 meskes Exp $
*
*-------------------------------------------------------------------------
*/
@@ -335,13 +335,20 @@ cppline {space}*#(.*\\{line_end})*.*
startlit();
}
<xh>{xhstop} {
+ long val;
char* endptr;
BEGIN(SQL);
errno = 0;
- yylval.ival = strtol(literalbuf, &endptr, 16);
- if (*endptr != '\0' || errno == ERANGE)
+ val = strtol(literalbuf, &endptr, 16);
+ if (*endptr != '\0' || errno == ERANGE
+#ifdef HAVE_LONG_INT_64
+ /* if long > 32 bits, check for overflow of int4 */
+ || val != (long) ((int32) val)
+#endif
+ )
mmerror(ET_ERROR, "Bad hexadecimal integer input");
+ yylval.ival = val;
return ICONST;
}
@@ -498,16 +505,23 @@ cppline {space}*#(.*\\{line_end})*.*
return PARAM;
}
<C,SQL>{integer} {
+ long val;
char* endptr;
errno = 0;
- yylval.ival = strtol((char *)yytext, &endptr,10);
- if (*endptr != '\0' || errno == ERANGE)
+ val = strtol((char *)yytext, &endptr,10);
+ if (*endptr != '\0' || errno == ERANGE
+#ifdef HAVE_LONG_INT_64
+ /* if long > 32 bits, check for overflow of int4 */
+ || val != (long) ((int32) val)
+#endif
+ )
{
errno = 0;
yylval.str = mm_strdup((char*)yytext);
return FCONST;
}
+ yylval.ival = val;
return ICONST;
}
<SQL>{ip} {