wpp: Properly free defines (Valgrind).

This commit is contained in:
Matteo Bruni 2014-06-24 22:25:26 +02:00 committed by Alexandre Julliard
parent c8c609b59d
commit f91fa37221

View file

@ -292,7 +292,7 @@ void pp_pop_define_state(void)
for (i = 0; i < HASHKEY; i++) for (i = 0; i < HASHKEY; i++)
{ {
while ((ppp = pp_def_state->defines[i]) != NULL) free_pp_entry( ppp, i ); while ((ppp = pp_def_state->defines[i]) != NULL) pp_del_define( ppp->ident );
} }
state = pp_def_state; state = pp_def_state;
pp_def_state = state->next; pp_def_state = state->next;
@ -302,6 +302,7 @@ void pp_pop_define_state(void)
void pp_del_define(const char *name) void pp_del_define(const char *name)
{ {
pp_entry_t *ppp; pp_entry_t *ppp;
int idx = pphash(name);
if((ppp = pplookup(name)) == NULL) if((ppp = pplookup(name)) == NULL)
{ {
@ -310,13 +311,13 @@ void pp_del_define(const char *name)
return; return;
} }
if(pp_status.debug)
printf("Deleting (%s, %d) <%s>\n", pp_status.input, pp_status.line_number, name);
free( ppp->ident ); free( ppp->ident );
free( ppp->subst.text ); free( ppp->subst.text );
free( ppp->filename ); free( ppp->filename );
free_pp_entry( ppp, pphash(name) ); free_pp_entry( ppp, idx );
if(pp_status.debug)
printf("Deleted (%s, %d) <%s>\n", pp_status.input, pp_status.line_number, name);
} }
pp_entry_t *pp_add_define(const char *def, const char *text) pp_entry_t *pp_add_define(const char *def, const char *text)