pidgin/pidgin

Fix crash if VV config device prefs are unset.

2016-09-02, Elliott Sales de Andrade
bd088b2700cd
Fix crash if VV config device prefs are unset.
--- 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(