]> git.sesse.net Git - vlc/blobdiff - src/misc/events.c
Fix pointer-int casts warnings
[vlc] / src / misc / events.c
index 8aad33266867532903629b2ce3b4775482f0ecda..d93cfc4de9398cbd715000d56c3cd07d4fe39c27 100644 (file)
@@ -105,8 +105,10 @@ void vlc_event_manager_fini( vlc_event_manager_t * p_em )
         FOREACH_ARRAY( listener, listeners_group->listeners )
             free( listener );
         FOREACH_END()
+        ARRAY_RESET( listeners_group->listeners );
         free( listeners_group );
     FOREACH_END()
+    ARRAY_RESET( p_em->listeners_groups );
 }
 
 /**
@@ -161,6 +163,7 @@ void vlc_event_send( vlc_event_manager_t * p_em,
             if( !array_of_cached_listeners )
             {
                 msg_Err( p_em->p_parent_object, "Not enough memory in vlc_event_send" );
+                vlc_mutex_unlock( &p_em->object_lock );
                 return;
             }
 
@@ -170,7 +173,7 @@ void vlc_event_send( vlc_event_manager_t * p_em,
 #ifdef DEBUG_EVENT
                 cached_listener->psz_debug_name = strdup(cached_listener->psz_debug_name);
 #endif
-                cached_listener += sizeof(vlc_event_listener_t);
+                cached_listener++;
             FOREACH_END()
 
             break;
@@ -188,10 +191,11 @@ void vlc_event_send( vlc_event_manager_t * p_em,
                     cached_listener->psz_debug_name,
                     ppsz_event_type_to_name[p_event->type],
                     cached_listener->p_user_data );
+        free(cached_listener->psz_debug_name);
 #endif
 
         cached_listener->pf_callback( p_event, cached_listener->p_user_data );
-        cached_listener += sizeof(vlc_event_listener_t) ;
+        cached_listener++;
     }
     free( array_of_cached_listeners );