[vlc-devel] commit: Fix very minor memory leak when using OSS for audio. ( Richard Hosking )
git version control
git at videolan.org
Sat Mar 15 15:53:01 CET 2008
vlc | branch: master | Richard Hosking <richard at hovis.net> | Sat Mar 15 14:50:27 2008 +0000| [7d3cc85d1bc8a3d7aea4f5486148826304b0aa8b]
Fix very minor memory leak when using OSS for audio.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=7d3cc85d1bc8a3d7aea4f5486148826304b0aa8b
---
modules/access/v4l2/v4l2.c | 15 +++++++++------
1 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/modules/access/v4l2/v4l2.c b/modules/access/v4l2/v4l2.c
index 4762a1b..9b94a7e 100644
--- a/modules/access/v4l2/v4l2.c
+++ b/modules/access/v4l2/v4l2.c
@@ -2451,13 +2451,12 @@ static int OpenAudioDevAlsa( vlc_object_t *p_this, demux_sys_t *p_sys,
static int OpenAudioDevOss( vlc_object_t *p_this, demux_sys_t *p_sys,
vlc_bool_t b_demux )
{
- char *psz_device = p_sys->psz_adev;
int i_fd = 0;
int i_format;
/* OSS */
- if( !psz_device ) psz_device = strdup( OSS_DEFAULT ); /* FIXME leak */
+ char* psz_oss_device_name = strdup( ( !p_sys->psz_adev ) ? OSS_DEFAULT : p_sys->psz_adev );
- if( (i_fd = open( psz_device, O_RDONLY | O_NONBLOCK )) < 0 )
+ if( (i_fd = open( psz_oss_device_name, O_RDONLY | O_NONBLOCK )) < 0 )
{
msg_Err( p_this, "cannot open OSS audio device (%m)" );
goto adev_fail;
@@ -2490,10 +2489,12 @@ static int OpenAudioDevOss( vlc_object_t *p_this, demux_sys_t *p_sys,
if( !p_sys->psz_adev )
p_sys->psz_adev = strdup( OSS_DEFAULT );
+ free( psz_oss_device_name );
return i_fd;
adev_fail:
+ free( psz_oss_device_name );
if( i_fd >= 0 ) close( i_fd );
return -1;
@@ -2893,11 +2894,11 @@ static vlc_bool_t ProbeAudioDevOss( vlc_object_t *p_this, demux_sys_t *p_sys,
{
int i_fd = 0;
int i_caps;
- if( !psz_device ) psz_device = strdup( OSS_DEFAULT ); /* FIXME leak */
+ char* psz_oss_device_name = strdup( ( !psz_device ) ? OSS_DEFAULT : psz_device );
- if( ( i_fd = open( psz_device, O_RDONLY | O_NONBLOCK ) ) < 0 )
+ if( ( i_fd = open( psz_oss_device_name, O_RDONLY | O_NONBLOCK ) ) < 0 )
{
- msg_Err( p_this, "cannot open device %s for OSS audio (%m)", psz_device );
+ msg_Err( p_this, "cannot open device %s for OSS audio (%m)", psz_oss_device_name );
goto open_failed;
}
@@ -2908,11 +2909,13 @@ static vlc_bool_t ProbeAudioDevOss( vlc_object_t *p_this, demux_sys_t *p_sys,
goto open_failed;
}
+ free( psz_oss_device_name );
if( i_fd >= 0 ) close( i_fd );
return VLC_TRUE;
open_failed:
+ free( psz_oss_device_name );
if( i_fd >= 0 ) close( i_fd );
return VLC_FALSE;
}
More information about the vlc-devel
mailing list