diff --git a/tools/qfcc/include/function.h b/tools/qfcc/include/function.h index cad6ea0e6..8c6aca6c8 100644 --- a/tools/qfcc/include/function.h +++ b/tools/qfcc/include/function.h @@ -111,5 +111,6 @@ void build_function (function_t *f); void finish_function (function_t *f); void emit_function (function_t *f, struct expr_s *e); int function_parms (function_t *f, byte *parm_size); +void clear_functions (void); #endif//__function_h diff --git a/tools/qfcc/source/function.c b/tools/qfcc/source/function.c index eb7f4b6cf..1d3c5e6ac 100644 --- a/tools/qfcc/source/function.c +++ b/tools/qfcc/source/function.c @@ -662,3 +662,12 @@ function_parms (function_t *f, byte *parm_size) parm_size[i] = type_size (f->sym->type->t.func.param_types[i]); return f->sym->type->t.func.num_params; } + +void +clear_functions (void) +{ + if (overloaded_functions) + Hash_FlushTable (overloaded_functions); + if (function_map) + Hash_FlushTable (function_map); +} diff --git a/tools/qfcc/source/qfcc.c b/tools/qfcc/source/qfcc.c index 5aee48384..48e779cd1 100644 --- a/tools/qfcc/source/qfcc.c +++ b/tools/qfcc/source/qfcc.c @@ -343,6 +343,7 @@ compile_to_obj (const char *file, const char *obj, lang_t lang) return !options.preprocess_only; InitData (); + clear_functions (); clear_frame_macros (); clear_classes (); clear_immediates ();