Fix crash if VV config device prefs are unset.

Fri, 02 Sep 2016 02:06:28 -0400

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Fri, 02 Sep 2016 02:06:28 -0400
changeset 38027
bd088b2700cd
parent 38013
c21651e4f58e
child 38028
55123ed593a2
child 38474
ead8ae086fc9

Fix crash if VV config device prefs are unset.

finch/gntmedia.c file | annotate | diff | comparison | revisions
libpurple/mediamanager.c file | annotate | diff | comparison | revisions
pidgin/gtkmedia.c file | annotate | diff | comparison | revisions
--- 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(
--- 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;
 
--- 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(

mercurial