diff --git a/src/GDLLexer.hpp b/src/GDLLexer.hpp index 123d09632..7411b2ac0 100644 --- a/src/GDLLexer.hpp +++ b/src/GDLLexer.hpp @@ -132,13 +132,14 @@ class CUSTOM_API GDLLexer : public antlr::CharScanner, public GDLTokenTypes // make copy as we delete 'this' antlr::TokenStreamSelector* sel=selector; - // here 'this' is deleted (pops selector) - delete sel->getCurrentStream(); // make sure errors are reported in right file parserPtr->setFilename( static_cast(selector->getCurrentStream())->getFilename()); - + + // here 'this' is deleted (pops selector) + delete sel->getCurrentStream(); + // don't allow EOF until main lexer. Force the // selector to retry for another token. sel->retry(); diff --git a/src/gdlc.g b/src/gdlc.g index 4a7ef5a5c..6920d5d48 100644 --- a/src/gdlc.g +++ b/src/gdlc.g @@ -2152,13 +2152,14 @@ tokens { // make copy as we delete 'this' antlr::TokenStreamSelector* sel=selector; - // here 'this' is deleted (pops selector) - delete sel->getCurrentStream(); - // make sure errors are reported in right file parserPtr->setFilename( static_cast(selector->getCurrentStream())->getFilename()); - + + //GD: see issue #1632 -- deletion must be here and not before previous line! + // here 'this' is deleted (pops selector) + delete sel->getCurrentStream(); + // don't allow EOF until main lexer. Force the // selector to retry for another token. sel->retry();