qulogic/pidgin

Fix VV prefs segfault when prefs are missing
release-2.x.y
2018-04-27, David Woodhouse
5d925a1df8f6
Parents 57e88ffa6134
Children 45020dd8cbd9
Fix VV prefs segfault when prefs are missing

Install them at startup, and fix the comparison func to use g_strcmp0 too.
--- a/pidgin/gtkprefs.c Thu Apr 26 09:08:14 2018 +0100
+++ b/pidgin/gtkprefs.c Fri Apr 27 22:24:02 2018 +0100
@@ -3240,7 +3240,7 @@
devices = get_vv_device_menuitems(element_type);
if (g_list_find_custom(devices, purple_prefs_get_string(preference_key),
- (GCompareFunc)strcmp) == NULL)
+ (GCompareFunc)g_strcmp0) == NULL)
{
GList *next = g_list_next(devices);
if (next)
@@ -3504,6 +3504,22 @@
purple_prefs_connect_callback(&prefs, PIDGIN_PREFS_ROOT "/smileys/theme",
smiley_theme_pref_cb, NULL);
+#ifdef USE_VV
+ /* Voice/Video */
+ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/vvconfig");
+ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/vvconfig/audio");
+ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/vvconfig/audio/src");
+ purple_prefs_add_string(PIDGIN_PREFS_ROOT "/vvconfig/audio/src/device", "");
+ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/vvconfig/audio/sink");
+ purple_prefs_add_string(PIDGIN_PREFS_ROOT "/vvconfig/audio/sink/device", "");
+ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/vvconfig/video");
+ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/vvconfig/video/src");
+ purple_prefs_add_string(PIDGIN_PREFS_ROOT "/vvconfig/video/src/device", "");
+ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/vvconfig/video");
+ purple_prefs_add_none(PIDGIN_PREFS_ROOT "/vvconfig/video/sink");
+ purple_prefs_add_string(PIDGIN_PREFS_ROOT "/vvconfig/video/sink/device", "");
+#endif
+
pidgin_prefs_update_old();
}