1
0
mirror of https://github.com/postgres/postgres.git synced 2025-08-31 17:02:12 +03:00

When a macro is replaced by the preprocessor, pgc.l reaches a end of

file, which is not the actual end of the file. One side effect of that
is that if you are i n a ifdef block, you get a wrong error telling you
that a endif is missing.

This patch corrects pgc.l and also adds a test of this problem to
test1.pgc. To  convince you apply the patch to test1.pgc first then try
to compile the test the n apply the patch to pgc.l.

The patch moves the test of the scope of an ifdef block to the end of
the file b eeing parsed, including all includes files, ... .

Nicolas Bazin
This commit is contained in:
Bruce Momjian
2002-04-05 11:39:47 +00:00
parent 3cbe6b2478
commit 811f7df274
2 changed files with 12 additions and 9 deletions

View File

@@ -12,7 +12,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.89 2002/03/24 18:22:21 tgl Exp $
* $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.90 2002/04/05 11:39:45 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -837,14 +837,14 @@ cppline {space}*#(.*\\{space})*.*
}
<<EOF>> {
if (yy_buffer == NULL) {
if ( preproc_tos > 0 )
{
preproc_tos = 0;
mmerror(PARSE_ERROR, ET_FATAL, "Missing 'EXEC SQL ENDIF;'");
}
if (yy_buffer == NULL)
yyterminate();
}
else
{
struct _yy_buffer *yb = yy_buffer;