diff options
author | David Sommerseth <davids@redhat.com> | 2009-11-10 13:58:37 +0100 |
---|---|---|
committer | David Sommerseth <davids@redhat.com> | 2009-11-10 13:58:37 +0100 |
commit | fc05911e5e2e810796f2aa7f07d3b12c51e5cf35 (patch) | |
tree | 0c42f2826c3444e652125e01486226aab20ac601 /server/parser | |
parent | 20f464f64d02def70d3333e8130b38c3cda393a8 (diff) | |
download | rteval-fc05911e5e2e810796f2aa7f07d3b12c51e5cf35.tar.gz rteval-fc05911e5e2e810796f2aa7f07d3b12c51e5cf35.tar.xz rteval-fc05911e5e2e810796f2aa7f07d3b12c51e5cf35.zip |
Avoid recursion calls in do_free_vals()
Diffstat (limited to 'server/parser')
-rw-r--r-- | server/parser/eurephia_values.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/server/parser/eurephia_values.c b/server/parser/eurephia_values.c index dbdbc13..d13bb3f 100644 --- a/server/parser/eurephia_values.c +++ b/server/parser/eurephia_values.c @@ -43,12 +43,17 @@ * @param vls Pointer to a eurephiaVALUES stack. */ static inline void do_free_vals(eurephiaVALUES *vls) { - if( vls->next != NULL ) { - do_free_vals(vls->next); - } - free_nullsafe(vls->key); - free_nullsafe(vls->val); - free_nullsafe(vls); + eurephiaVALUES *ptr = NULL, *ptr_next = NULL; + + ptr = vls; + while( ptr ) { + free_nullsafe(ptr->key); + free_nullsafe(ptr->val); + + ptr_next = ptr->next; + free_nullsafe(ptr); + ptr = ptr_next; + } } |