diff --git a/modules/access/mms/mmstu.c b/modules/access/mms/mmstu.c index 1ae4b90c551806bbd21b897bafc02d0d1ced4369..f0d600f774844b87dc3e72363d6beb6050f956e8 100644 --- a/modules/access/mms/mmstu.c +++ b/modules/access/mms/mmstu.c @@ -201,6 +201,11 @@ int MMSTUOpen( access_t *p_access ) /* Keep the connection alive when paused */ p_sys->p_keepalive = malloc( sizeof( mmstu_keepalive_t ) ); + if( !p_sys->p_keepalive ) + { + MMSTUClose ( p_access ); + return VLC_ENOMEM; + } p_sys->p_keepalive->p_access = p_access; vlc_mutex_init( &p_sys->p_keepalive->lock ); vlc_cond_init( &p_sys->p_keepalive->wait ); @@ -305,11 +310,14 @@ static int Control( access_t *p_access, int i_query, va_list args ) else Seek( p_access, p_access->info.i_pos ); - vlc_mutex_lock( &p_sys->p_keepalive->lock ); - p_sys->p_keepalive->b_paused = b_bool; - if( b_bool ) - vlc_cond_signal( &p_sys->p_keepalive->wait ); - vlc_mutex_unlock( &p_sys->p_keepalive->lock ); + if( p_sys->p_keepalive ) + { + vlc_mutex_lock( &p_sys->p_keepalive->lock ); + p_sys->p_keepalive->b_paused = b_bool; + if( b_bool ) + vlc_cond_signal( &p_sys->p_keepalive->wait ); + vlc_mutex_unlock( &p_sys->p_keepalive->lock ); + } break; case ACCESS_GET_TITLE_INFO: