22*
33* Open Watcom Project
44*
5+ * Copyright (c) 2026 The Open Watcom Contributors. All Rights Reserved.
56* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
67*
78* ========================================================================
4243const char * const Scanner::_SpecialCharacters = " ,{}|:()@#;" ;
4344
4445
46+ static void my_clear ( std::vector<char *> *vec )
47+ {
48+ for (size_t i = 0 ; i < vec->size (); ++i) {
49+ delete[] (*vec)[i];
50+ }
51+ vec->clear ();
52+ }
53+
4554Scanner::Scanner ( const char * fileName, short t_string, short t_number, short t_ident, const TokenStruct *tokens, int tokcnt )
4655// -----------------------------------------------------------------------------------------------------------------------------
4756{
@@ -62,7 +71,9 @@ Scanner::Scanner( const char * fileName, short t_string, short t_number, short t
6271Scanner::~Scanner ()
6372// -----------------
6473{
74+ my_clear ( _identifiers );
6575 delete _identifiers;
76+ my_clear ( _strings );
6677 delete _strings;
6778 delete _file;
6879}
@@ -223,7 +234,7 @@ void Scanner::readQuotedString( YYSTYPE & lval )
223234
224235 buffer[bufPos] = ' \0 ' ;
225236
226- dupStr = new char [strlen ( buffer ) + 1 ];
237+ dupStr = new char [strlen ( buffer ) + 1 ];
227238 strcpy ( dupStr, buffer );
228239
229240 lval = (YYSTYPE)_strings->size ();
@@ -310,7 +321,7 @@ short Scanner::tokenValue( const char * tok, YYSTYPE & lval )
310321 if ( res ) {
311322 return res->token ;
312323 } else {
313- dupStr = new char [strlen ( tok ) + 1 ];
324+ dupStr = new char [strlen ( tok ) + 1 ];
314325 strcpy ( dupStr, tok );
315326
316327 lval = (YYSTYPE)_identifiers->size ();
@@ -319,4 +330,3 @@ short Scanner::tokenValue( const char * tok, YYSTYPE & lval )
319330 return _T_Ident;
320331 }
321332}
322-
0 commit comments