Skip to content

Commit 9dfac0a

Browse files
committed
see gnudatalanguage#1632 do not delete an object before using something that was defined inside said object.
1 parent b419d27 commit 9dfac0a

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

src/GDLLexer.hpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -132,13 +132,14 @@ class CUSTOM_API GDLLexer : public antlr::CharScanner, public GDLTokenTypes
132132
// make copy as we delete 'this'
133133
antlr::TokenStreamSelector* sel=selector;
134134

135-
// here 'this' is deleted (pops selector)
136-
delete sel->getCurrentStream();
137135

138136
// make sure errors are reported in right file
139137
parserPtr->setFilename(
140138
static_cast<GDLLexer*>(selector->getCurrentStream())->getFilename());
141-
139+
140+
// here 'this' is deleted (pops selector)
141+
delete sel->getCurrentStream();
142+
142143
// don't allow EOF until main lexer. Force the
143144
// selector to retry for another token.
144145
sel->retry();

src/gdlc.g

+5-4
Original file line numberDiff line numberDiff line change
@@ -2152,13 +2152,14 @@ tokens {
21522152
// make copy as we delete 'this'
21532153
antlr::TokenStreamSelector* sel=selector;
21542154

2155-
// here 'this' is deleted (pops selector)
2156-
delete sel->getCurrentStream();
2157-
21582155
// make sure errors are reported in right file
21592156
parserPtr->setFilename(
21602157
static_cast<GDLLexer*>(selector->getCurrentStream())->getFilename());
2161-
2158+
2159+
//GD: see issue #1632 -- deletion must be here and not before previous line!
2160+
// here 'this' is deleted (pops selector)
2161+
delete sel->getCurrentStream();
2162+
21622163
// don't allow EOF until main lexer. Force the
21632164
// selector to retry for another token.
21642165
sel->retry();

0 commit comments

Comments
 (0)