libvlc_log_t *libvlc_log_open( const libvlc_instance_t *p_instance, libvlc_exception_t *p_e )
{
-
struct libvlc_log_t *p_log =
(struct libvlc_log_t *)malloc(sizeof(struct libvlc_log_t));
p_log->p_instance = p_instance;
p_log->p_messages = msg_Subscribe(p_instance->p_libvlc_int, MSG_QUEUE_NORMAL);
- if( !p_log->p_messages ) RAISENULL( "Out of memory" );
+ if( !p_log->p_messages )
+ {
+ free( p_log );
+ RAISENULL( "Out of memory" );
+ }
+ libvlc_retain( p_instance );
return p_log;
}
if( p_log && p_log->p_messages )
{
msg_Unsubscribe(p_log->p_instance->p_libvlc_int, p_log->p_messages);
+ libvlc_release( p_log->p_instance );
free(p_log);
}
else