summaryrefslogtreecommitdiffstats
path: root/playtree.c
diff options
context:
space:
mode:
Diffstat (limited to 'playtree.c')
-rw-r--r--playtree.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/playtree.c b/playtree.c
index e4f6fb2771..900c71ce18 100644
--- a/playtree.c
+++ b/playtree.c
@@ -32,8 +32,11 @@ play_tree_free(play_tree_t* pt, int childs) {
#endif
if(childs) {
- for(iter = pt->child; iter != NULL; iter = iter->next)
+ for(iter = pt->child; iter != NULL; ) {
+ play_tree_t* nxt=iter->next;
play_tree_free(iter,1);
+ iter = nxt;
+ }
pt->child = NULL;
}
@@ -64,8 +67,11 @@ play_tree_free_list(play_tree_t* pt, int childs) {
for(iter = pt ; iter->prev != NULL ; iter = iter->prev)
/* NOTHING */;
- for( ; iter != NULL ; iter = iter->next)
+ while(iter) {
+ play_tree_t* nxt = iter->next;
play_tree_free(iter,childs);
+ iter = nxt;
+ }
}