MEM_VEC_FUNCTIONS(token, char, value)
MEM_VEC_FUNCTIONS(lex_file, frame_macro, frames)
+VECTOR_MAKE(char*, lex_filenames);
+
void lexerror(lex_file *lex, const char *fmt, ...)
{
va_list ap;
lex->peekpos = 0;
+ lex_filenames_add(lex->name);
+
return lex;
}
+void lex_cleanup(void)
+{
+ size_t i;
+ for (i = 0; i < lex_filenames_elements; ++i)
+ mem_d(lex_filenames_data[i]);
+ mem_d(lex_filenames_data);
+}
+
void lex_close(lex_file *lex)
{
size_t i;
mem_d(lex->frames[i].name);
MEM_VECTOR_CLEAR(lex, frames);
+ if (lex->modelname)
+ mem_d(lex->modelname);
+
if (lex->file)
fclose(lex->file);
if (lex->tok)
token_delete(lex->tok);
- mem_d(lex->name);
+ /* mem_d(lex->name); collected in lex_filenames */
mem_d(lex);
}