]> git.sesse.net Git - vlc/blobdiff - modules/access/v4l2/v4l2.c
macosx: Fix a memleak.
[vlc] / modules / access / v4l2 / v4l2.c
index 11374d8f9fd8da369079ef0e6eaf74594a805085..ebff1130e1c59783fb2a69f75a646b4cb686ff04 100644 (file)
@@ -1323,7 +1323,7 @@ static ssize_t AccessRead( access_t * p_access, uint8_t * p_buffer, size_t i_len
 
     do
     {
-        if( p_access->b_die )
+        if( !vlc_object_alive (p_access) )
             return 0;
 
         ufd.revents = 0;
@@ -1629,7 +1629,7 @@ static block_t* GrabAudio( demux_t *p_demux )
             /* Test for overrun */
             if( i_correction_delta > p_sys->i_audio_max_frame_size )
             {
-                msg_Warn( p_demux, "ALSA read overrun (%d > %d)",
+                msg_Warn( p_demux, "ALSA read overrun (%zu > %zu)",
                           i_correction_delta, p_sys->i_audio_max_frame_size );
                 i_correction_delta = p_sys->i_audio_max_frame_size;
                 snd_pcm_prepare( p_sys->p_alsa_pcm );
@@ -1662,18 +1662,12 @@ static int InitRead( demux_t *p_demux, int i_fd, unsigned int i_buffer_size )
 
     p_sys->p_buffers = calloc( 1, sizeof( *p_sys->p_buffers ) );
     if( !p_sys->p_buffers )
-    {
-        msg_Err( p_demux, "Out of memory" );
         goto open_failed;
-    }
 
     p_sys->p_buffers[0].length = i_buffer_size;
     p_sys->p_buffers[0].start = malloc( i_buffer_size );
     if( !p_sys->p_buffers[0].start )
-    {
-        msg_Err( p_demux, "Out of memory" );
         goto open_failed;
-    }
 
     return VLC_SUCCESS;
 
@@ -1767,32 +1761,25 @@ static int InitUserP( demux_t *p_demux, int i_fd, unsigned int i_buffer_size )
     if( ioctl( i_fd, VIDIOC_REQBUFS, &req ) < 0 )
     {
         msg_Err( p_demux, "device does not support user pointer i/o" );
-        goto open_failed;
+        return VLC_EGENERIC;
     }
 
     p_sys->p_buffers = calloc( 4, sizeof( *p_sys->p_buffers ) );
     if( !p_sys->p_buffers )
-    {
-        msg_Err( p_demux, "Out of memory" );
         goto open_failed;
-    }
 
     for( p_sys->i_nbuffers = 0; p_sys->i_nbuffers < 4; ++p_sys->i_nbuffers )
     {
         p_sys->p_buffers[p_sys->i_nbuffers].length = i_buffer_size;
-        posix_memalign( &p_sys->p_buffers[p_sys->i_nbuffers].start,
-                /* boundary */ i_page_size, i_buffer_size );
-
-        if( !p_sys->p_buffers[p_sys->i_nbuffers].start )
-        {
-            msg_Err( p_demux, "out of memory" );
+        if( posix_memalign( &p_sys->p_buffers[p_sys->i_nbuffers].start,
+                /* boundary */ i_page_size, i_buffer_size ) )
             goto open_failed;
-        }
     }
 
     return VLC_SUCCESS;
 
 open_failed:
+    free( p_sys->p_buffers );
     return VLC_EGENERIC;
 
 }
@@ -3112,10 +3099,10 @@ static void ControlListPrint( vlc_object_t *p_obj, int i_fd,
 
     if( b_demux )
         var_AddCallback( p_obj, psz_name,
-                        DemuxControlCallback, (void*)queryctrl.id );
+                        DemuxControlCallback, (void*)(intptr_t)queryctrl.id );
     else
         var_AddCallback( p_obj, psz_name,
-                        AccessControlCallback, (void*)queryctrl.id );
+                        AccessControlCallback, (void*)(intptr_t)queryctrl.id );
 
     free( psz_name );
 }