Commit b900a611 authored by Rémi Duraffort's avatar Rémi Duraffort

Fix memleak (same problem with var_Change())

parent 5efbd6a1
...@@ -334,7 +334,7 @@ void libvlc_video_set_viewport( libvlc_instance_t *p_instance, libvlc_media_play ...@@ -334,7 +334,7 @@ void libvlc_video_set_viewport( libvlc_instance_t *p_instance, libvlc_media_play
} }
} }
#else #else
(void) p_instance; (void) view; (void) clip; (void) p_e; (void) p_instance; (void) p_mi; (void) view; (void) clip; (void) p_e;
#endif #endif
} }
...@@ -417,13 +417,13 @@ int libvlc_video_get_spu( libvlc_media_player_t *p_mi, ...@@ -417,13 +417,13 @@ int libvlc_video_get_spu( libvlc_media_player_t *p_mi,
var_Change( p_input_thread, "spu-es", VLC_VAR_GETCHOICES, &val_list, NULL ); var_Change( p_input_thread, "spu-es", VLC_VAR_GETCHOICES, &val_list, NULL );
for( i = 0; i < val_list.p_list->i_count; i++ ) for( i = 0; i < val_list.p_list->i_count; i++ )
{ {
vlc_value_t spu_val = val_list.p_list->p_values[i]; if( val.i_int == val_list.p_list->p_values[i].i_int )
if( val.i_int == spu_val.i_int )
{ {
i_spu = i; i_spu = i;
break; break;
} }
} }
var_Change( p_input_thread, "spu-es", VLC_VAR_FREELIST, &val_list, NULL );
vlc_object_release( p_input_thread ); vlc_object_release( p_input_thread );
return i_spu; return i_spu;
} }
...@@ -433,13 +433,17 @@ int libvlc_video_get_spu_count( libvlc_media_player_t *p_mi, ...@@ -433,13 +433,17 @@ int libvlc_video_get_spu_count( libvlc_media_player_t *p_mi,
{ {
input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e ); input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e );
vlc_value_t val_list; vlc_value_t val_list;
int i_spu_count;
if( !p_input_thread ) if( !p_input_thread )
return -1; return -1;
var_Change( p_input_thread, "spu-es", VLC_VAR_GETCHOICES, &val_list, NULL ); var_Change( p_input_thread, "spu-es", VLC_VAR_GETCHOICES, &val_list, NULL );
i_spu_count = val_list.p_list->i_count;
var_Change( p_input_thread, "spu-es", VLC_VAR_FREELIST, &val_list, NULL );
vlc_object_release( p_input_thread ); vlc_object_release( p_input_thread );
return val_list.p_list->i_count; return i_spu_count;
} }
libvlc_track_description_t * libvlc_track_description_t *
...@@ -464,15 +468,13 @@ void libvlc_video_set_spu( libvlc_media_player_t *p_mi, int i_spu, ...@@ -464,15 +468,13 @@ void libvlc_video_set_spu( libvlc_media_player_t *p_mi, int i_spu,
if( val_list.p_list->i_count == 0 ) if( val_list.p_list->i_count == 0 )
{ {
libvlc_exception_raise( p_e, "Subtitle value out of range" ); libvlc_exception_raise( p_e, "Subtitle value out of range" );
vlc_object_release( p_input_thread ); goto end;
return;
} }
if( (i_spu < 0) && (i_spu > val_list.p_list->i_count) ) if( (i_spu < 0) && (i_spu > val_list.p_list->i_count) )
{ {
libvlc_exception_raise( p_e, "Subtitle value out of range" ); libvlc_exception_raise( p_e, "Subtitle value out of range" );
vlc_object_release( p_input_thread ); goto end;
return;
} }
newval = val_list.p_list->p_values[i_spu]; newval = val_list.p_list->p_values[i_spu];
...@@ -481,6 +483,9 @@ void libvlc_video_set_spu( libvlc_media_player_t *p_mi, int i_spu, ...@@ -481,6 +483,9 @@ void libvlc_video_set_spu( libvlc_media_player_t *p_mi, int i_spu,
{ {
libvlc_exception_raise( p_e, "Setting subtitle value failed" ); libvlc_exception_raise( p_e, "Setting subtitle value failed" );
} }
end:
var_Change( p_input_thread, "spu-es", VLC_VAR_FREELIST, &val_list, NULL );
vlc_object_release( p_input_thread ); vlc_object_release( p_input_thread );
} }
...@@ -653,13 +658,17 @@ int libvlc_video_get_track_count( libvlc_media_player_t *p_mi, ...@@ -653,13 +658,17 @@ int libvlc_video_get_track_count( libvlc_media_player_t *p_mi,
{ {
input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e ); input_thread_t *p_input_thread = libvlc_get_input_thread( p_mi, p_e );
vlc_value_t val_list; vlc_value_t val_list;
int i_track_count;
if( !p_input_thread ) if( !p_input_thread )
return -1; return -1;
var_Change( p_input_thread, "video-es", VLC_VAR_GETCHOICES, &val_list, NULL ); var_Change( p_input_thread, "video-es", VLC_VAR_GETCHOICES, &val_list, NULL );
i_track_count = val_list.p_list->i_count;
var_Change( p_input_thread, "video-es", VLC_VAR_FREELIST, &val_list, NULL );
vlc_object_release( p_input_thread ); vlc_object_release( p_input_thread );
return val_list.p_list->i_count; return i_track_count;
} }
libvlc_track_description_t * libvlc_track_description_t *
...@@ -693,13 +702,13 @@ int libvlc_video_get_track( libvlc_media_player_t *p_mi, ...@@ -693,13 +702,13 @@ int libvlc_video_get_track( libvlc_media_player_t *p_mi,
var_Change( p_input_thread, "video-es", VLC_VAR_GETCHOICES, &val_list, NULL ); var_Change( p_input_thread, "video-es", VLC_VAR_GETCHOICES, &val_list, NULL );
for( i = 0; i < val_list.p_list->i_count; i++ ) for( i = 0; i < val_list.p_list->i_count; i++ )
{ {
vlc_value_t track_val = val_list.p_list->p_values[i]; if( val_list.p_list->p_values[i].i_int == val.i_int )
if( track_val.i_int == val.i_int )
{ {
i_track = i; i_track = i;
break; break;
} }
} }
var_Change( p_input_thread, "video-es", VLC_VAR_FREELIST, &val_list, NULL );
vlc_object_release( p_input_thread ); vlc_object_release( p_input_thread );
return i_track; return i_track;
} }
...@@ -724,11 +733,13 @@ void libvlc_video_set_track( libvlc_media_player_t *p_mi, int i_track, ...@@ -724,11 +733,13 @@ void libvlc_video_set_track( libvlc_media_player_t *p_mi, int i_track,
i_ret = var_Set( p_input_thread, "audio-es", val ); i_ret = var_Set( p_input_thread, "audio-es", val );
if( i_ret < 0 ) if( i_ret < 0 )
libvlc_exception_raise( p_e, "Setting video track failed" ); libvlc_exception_raise( p_e, "Setting video track failed" );
vlc_object_release( p_input_thread ); goto end;
return;
} }
} }
libvlc_exception_raise( p_e, "Video track out of range" ); libvlc_exception_raise( p_e, "Video track out of range" );
end:
var_Change( p_input_thread, "video-es", VLC_VAR_FREELIST, &val_list, NULL );
vlc_object_release( p_input_thread ); vlc_object_release( p_input_thread );
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment