diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 4d8f038ce26af298d4b10d66b6bb1eca97715a3b..41c07a43ecdf86333f535a21c67852f16bb37d6c 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 e8896e3cc60f4c1977339413232d6779a73777cc..6c05ccf32e5aa94cf84294dcb05516f1e4d47749 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}			{