[geany/geany] e47d45: Fortran: fix handling of preprocessor directives on the first line
Colomban Wendling
git-noreply at xxxxx
Sun Feb 23 19:10:35 UTC 2014
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Sun, 23 Feb 2014 19:10:35 UTC
Commit: e47d45eb281a968b733241aab431c045d61569f9
https://github.com/geany/geany/commit/e47d45eb281a968b733241aab431c045d61569f9
Log Message:
-----------
Fortran: fix handling of preprocessor directives on the first line
Fix a race initialization leading to incorrect handling of preprocessor
directives on the first input line.
Test case contributed by Adam Hirst, thanks.
Modified Paths:
--------------
tagmanager/ctags/fortran.c
tests/ctags/Makefile.am
tests/ctags/preprocessor.f90
tests/ctags/preprocessor.f90.tags
Modified: tagmanager/ctags/fortran.c
13 files changed, 7 insertions(+), 6 deletions(-)
===================================================================
@@ -208,6 +208,7 @@
static boolean FreeSourceForm = FALSE;
static boolean ParsingString;
static tokenInfo *Parent = NULL;
+static boolean NewLine = TRUE;
static unsigned int contextual_fake_count = 0;
/* indexed by tagType */
@@ -725,7 +726,6 @@ static int skipToNextLine (void)
static int getFreeFormChar (boolean inComment)
{
- static boolean newline = TRUE;
boolean advanceLine = FALSE;
int c = fileGetc ();
@@ -740,7 +740,7 @@ static int getFreeFormChar (boolean inComment)
while (isspace (c) && c != '\n');
if (c == '\n')
{
- newline = TRUE;
+ NewLine = TRUE;
advanceLine = TRUE;
}
else if (c == '!')
@@ -751,16 +751,16 @@ static int getFreeFormChar (boolean inComment)
c = '&';
}
}
- else if (newline && (c == '!' || c == '#'))
+ else if (NewLine && (c == '!' || c == '#'))
advanceLine = TRUE;
while (advanceLine)
{
while (isspace (c))
c = fileGetc ();
- if (c == '!' || (newline && c == '#'))
+ if (c == '!' || (NewLine && c == '#'))
{
c = skipToNextLine ();
- newline = TRUE;
+ NewLine = TRUE;
continue;
}
if (c == '&')
@@ -768,7 +768,7 @@ static int getFreeFormChar (boolean inComment)
else
advanceLine = FALSE;
}
- newline = (boolean) (c == '\n');
+ NewLine = (boolean) (c == '\n');
return c;
}
@@ -2289,6 +2289,7 @@ static boolean findFortranTags (const unsigned int passCount)
FreeSourceForm = (boolean) (passCount > 1);
contextual_fake_count = 0;
Column = 0;
+ NewLine = TRUE;
exception = (exception_t) setjmp (Exception);
if (exception == ExceptionEOF)
retry = FALSE;
Modified: tests/ctags/Makefile.am
1 files changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -194,6 +194,7 @@ test_sources = \
objectivec_protocol.mm \
Package.pm \
php5_5_class_kw.php \
+ preprocessor.f90 \
procedure_pointer_module.f90 \
procpoint.f90 \
property.cs \
Modified: tests/ctags/preprocessor.f90
17 files changed, 17 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,17 @@
+#include
+! preprocessor directives on line 1 (and only line 1) cause breakage
+module Invisible
+
+ integer :: nope
+
+contains
+
+ function SpillsOutside
+ ! ...
+ end function SpillsOutside
+
+end module Invisible
+
+program Main
+! ...
+end program Main
Modified: tests/ctags/preprocessor.f90.tags
5 files changed, 5 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,5 @@
+# format=tagmanager
+InvisibleÌ256Ö0
+MainÌ2048Ö0
+SpillsOutsideÌ16ÎInvisibleÖ0
+nopeÌ16384ÎInvisibleÖ0
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list