]> git.sesse.net Git - vlc/commitdiff
libvlc: pop_listener does not do its job.
authorPierre d'Herbemont <pdherbemont@free.fr>
Fri, 5 Jun 2009 05:32:07 +0000 (22:32 -0700)
committerPierre d'Herbemont <pdherbemont@free.fr>
Fri, 5 Jun 2009 05:34:25 +0000 (22:34 -0700)
Pointed by Laurent and Valgrind.

src/control/event_async.c

index 147e87bc2eee4901baf33970a98c32e2ecb09ab9..e8f9a0851fdbc8b110a39119a4839148901452aa 100644 (file)
@@ -133,14 +133,18 @@ static void pop_listener(libvlc_event_manager_t * p_em, libvlc_event_listener_t
     while (iter) {
         if(listeners_are_equal(&iter->listener, listener))
         {
+            struct queue_elmt * to_delete = iter;
             if(!prev)
-                queue(p_em)->elements = iter->next;
+                queue(p_em)->elements = to_delete->next;
             else
-                prev->next = iter->next;
-            free(iter);
+                prev->next = to_delete->next;
+            iter = to_delete->next;
+            free(to_delete);
+        }
+        else {
+            prev = iter;
+            iter = iter->next;
         }
-        prev = iter;
-        iter = iter->next;
     }
 }