]> git.xonotic.org Git - xonotic/gmqcc.git/blobdiff - lexer.c
fix a wrong print in parsing.qc test
[xonotic/gmqcc.git] / lexer.c
diff --git a/lexer.c b/lexer.c
index d8fcf2e28f0a0257bfa8418ced003b206de70b4d..d9483d806e9f2afe1538a9916a77881fc393d4ec 100644 (file)
--- a/lexer.c
+++ b/lexer.c
@@ -9,6 +9,8 @@
 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;
@@ -145,9 +147,19 @@ lex_file* lex_open(const char *file)
 
     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;
@@ -155,11 +167,14 @@ void lex_close(lex_file *lex)
         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);
 }