diff options
author | Brad King <brad.king@kitware.com> | 2013-09-17 14:24:17 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-09-17 14:27:08 (GMT) |
commit | ad3d5c59b3c57112e3b96812ee8a66b08dcd864e (patch) | |
tree | f864a5ecfc989d2640b559fe3aa0e8f667db8a61 | |
parent | 40c76c1dc84867aae6ef1b6138abed5de3eeb28b (diff) | |
download | CMake-ad3d5c59b3c57112e3b96812ee8a66b08dcd864e.zip CMake-ad3d5c59b3c57112e3b96812ee8a66b08dcd864e.tar.gz CMake-ad3d5c59b3c57112e3b96812ee8a66b08dcd864e.tar.bz2 |
cmListFileLexer: Fix leak on error before EOF
Teach cmListFileLexerDestroy to call cmListFileLexerSetToken with a NULL
token to free the token string buffer. Without this, if an error occurs
before the token cleanup happens when EOF is reached, then the token
string buffer may leak.
-rw-r--r-- | Source/cmListFileLexer.c | 1 | ||||
-rw-r--r-- | Source/cmListFileLexer.in.l | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/Source/cmListFileLexer.c b/Source/cmListFileLexer.c index 2841fe5..f127add 100644 --- a/Source/cmListFileLexer.c +++ b/Source/cmListFileLexer.c @@ -2271,6 +2271,7 @@ static void cmListFileLexerInit(cmListFileLexer* lexer) /*--------------------------------------------------------------------------*/ static void cmListFileLexerDestroy(cmListFileLexer* lexer) { + cmListFileLexerSetToken(lexer, 0, 0); if(lexer->file || lexer->string_buffer) { cmListFileLexer_yylex_destroy(lexer->scanner); diff --git a/Source/cmListFileLexer.in.l b/Source/cmListFileLexer.in.l index 12b53ee..bd3c1eb 100644 --- a/Source/cmListFileLexer.in.l +++ b/Source/cmListFileLexer.in.l @@ -292,6 +292,7 @@ static void cmListFileLexerInit(cmListFileLexer* lexer) /*--------------------------------------------------------------------------*/ static void cmListFileLexerDestroy(cmListFileLexer* lexer) { + cmListFileLexerSetToken(lexer, 0, 0); if(lexer->file || lexer->string_buffer) { cmListFileLexer_yylex_destroy(lexer->scanner); |