# HG changeset patch # User Elliott Sales de Andrade # Date 1472796388 14400 # Node ID bd088b2700cd7104d130f5f2463b55efc8935019 # Parent c21651e4f58e7daa1a877b02bdcb6c2753ef5502 Fix crash if VV config device prefs are unset. diff -r c21651e4f58e -r bd088b2700cd finch/gntmedia.c --- a/finch/gntmedia.c Tue Sep 06 14:45:30 2016 -0500 +++ b/finch/gntmedia.c Fri Sep 02 02:06:28 2016 -0400 @@ -414,13 +414,14 @@ { #ifdef USE_VV PurpleMediaManager *manager = purple_media_manager_get(); - PurpleMediaElementInfo *audio_src; - PurpleMediaElementInfo *audio_sink; + PurpleMediaElementInfo *audio_src = NULL; + PurpleMediaElementInfo *audio_sink = NULL; const char *pref; pref = purple_prefs_get_string( FINCH_PREFS_ROOT "/vvconfig/audio/src/device"); - audio_src = purple_media_manager_get_element_info(manager, pref); + if (pref) + audio_src = purple_media_manager_get_element_info(manager, pref); if (!audio_src) { pref = "autoaudiosrc"; purple_prefs_set_string( @@ -431,7 +432,8 @@ pref = purple_prefs_get_string( FINCH_PREFS_ROOT "/vvconfig/audio/sink/device"); - audio_sink = purple_media_manager_get_element_info(manager, pref); + if (pref) + audio_sink = purple_media_manager_get_element_info(manager, pref); if (!audio_sink) { pref = "autoaudiosink"; purple_prefs_set_string( diff -r c21651e4f58e -r bd088b2700cd libpurple/mediamanager.c --- a/libpurple/mediamanager.c Tue Sep 06 14:45:30 2016 -0500 +++ b/libpurple/mediamanager.c Fri Sep 02 02:06:28 2016 -0400 @@ -1229,6 +1229,7 @@ GList *iter; g_return_val_if_fail(PURPLE_IS_MEDIA_MANAGER(manager), NULL); + g_return_val_if_fail(id != NULL, NULL); iter = manager->priv->elements; diff -r c21651e4f58e -r bd088b2700cd pidgin/gtkmedia.c --- a/pidgin/gtkmedia.c Tue Sep 06 14:45:30 2016 -0500 +++ b/pidgin/gtkmedia.c Fri Sep 02 02:06:28 2016 -0400 @@ -1201,15 +1201,16 @@ { #ifdef USE_VV PurpleMediaManager *manager = purple_media_manager_get(); - PurpleMediaElementInfo *video_src; - PurpleMediaElementInfo *video_sink; - PurpleMediaElementInfo *audio_src; - PurpleMediaElementInfo *audio_sink; + PurpleMediaElementInfo *video_src = NULL; + PurpleMediaElementInfo *video_sink = NULL; + PurpleMediaElementInfo *audio_src = NULL; + PurpleMediaElementInfo *audio_sink = NULL; const char *pref; pref = purple_prefs_get_string( PIDGIN_PREFS_ROOT "/vvconfig/video/src/device"); - video_src = purple_media_manager_get_element_info(manager, pref); + if (pref) + video_src = purple_media_manager_get_element_info(manager, pref); if (!video_src) { pref = "autovideosrc"; purple_prefs_set_string( @@ -1220,7 +1221,8 @@ pref = purple_prefs_get_string( PIDGIN_PREFS_ROOT "/vvconfig/video/sink/device"); - video_sink = purple_media_manager_get_element_info(manager, pref); + if (pref) + video_sink = purple_media_manager_get_element_info(manager, pref); if (!video_sink) { pref = "autovideosink"; purple_prefs_set_string( @@ -1231,7 +1233,8 @@ pref = purple_prefs_get_string( PIDGIN_PREFS_ROOT "/vvconfig/audio/src/device"); - audio_src = purple_media_manager_get_element_info(manager, pref); + if (pref) + audio_src = purple_media_manager_get_element_info(manager, pref); if (!audio_src) { pref = "autoaudiosrc"; purple_prefs_set_string( @@ -1242,7 +1245,8 @@ pref = purple_prefs_get_string( PIDGIN_PREFS_ROOT "/vvconfig/audio/sink/device"); - audio_sink = purple_media_manager_get_element_info(manager, pref); + if (pref) + audio_sink = purple_media_manager_get_element_info(manager, pref); if (!audio_sink) { pref = "autoaudiosink"; purple_prefs_set_string(