mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-03-22 18:51:24 +00:00
keep the filenames of all lexed files in a global lex_filenames vector because we don't strdup the filenames into lex_ctx, but copy the pointer
This commit is contained in:
parent
6daf47fc5b
commit
4cf017bb6b
3 changed files with 16 additions and 1 deletions
14
lexer.c
14
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;
|
||||
|
@ -162,7 +174,7 @@ void lex_close(lex_file *lex)
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
1
lexer.h
1
lexer.h
|
@ -111,6 +111,7 @@ MEM_VECTOR_PROTO(lex_file, char, token);
|
|||
lex_file* lex_open (const char *file);
|
||||
void lex_close(lex_file *lex);
|
||||
int lex_do (lex_file *lex);
|
||||
void lex_cleanup(void);
|
||||
|
||||
/* Parser
|
||||
*
|
||||
|
|
2
main.c
2
main.c
|
@ -21,6 +21,7 @@
|
|||
* SOFTWARE.
|
||||
*/
|
||||
#include "gmqcc.h"
|
||||
#include "lexer.h"
|
||||
|
||||
uint32_t opts_flags[1 + (COUNT_FLAGS / 32)];
|
||||
uint32_t opts_warn [1 + (COUNT_WARNINGS / 32)];
|
||||
|
@ -475,6 +476,7 @@ cleanup:
|
|||
if (opts_output_free)
|
||||
mem_d((char*)opts_output);
|
||||
|
||||
lex_cleanup();
|
||||
util_meminfo();
|
||||
return retval;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue