diff --git a/src/misc/messages.c b/src/misc/messages.c index e12cbac1cfb1e4966173e0902e8a0e1c47e230c7..02edea820b684242846d5da7b08d16b12d7a2d14 100644 --- a/src/misc/messages.c +++ b/src/misc/messages.c @@ -210,6 +210,8 @@ void __msg_Unsubscribe( vlc_object_t *p_this, msg_subscription_t *p_sub ) msg_bank_t *p_bank = &p_this->p_libvlc->msg_bank; int i,j; + free( p_sub ); /* we won't dereference the pointer */ + vlc_mutex_lock( &p_bank->lock ); for( i = 0 ; i< p_bank->i_queues ; i++ ) @@ -222,7 +224,6 @@ void __msg_Unsubscribe( vlc_object_t *p_this, msg_subscription_t *p_sub ) REMOVE_ELEM( p_bank->pp_queues[i]->pp_sub, p_bank->pp_queues[i]->i_sub, j ); - if( p_sub ) free( p_sub ); } } vlc_mutex_unlock( & p_bank->pp_queues[i]->lock );