r19523 - in /desktop/unstable/libgnomekbd/debian: changelog patches/02_xkbcrap_crash.patch patches/series

joss at users.alioth.debian.org joss at users.alioth.debian.org
Fri Apr 10 21:32:28 UTC 2009


Author: joss
Date: Fri Apr 10 21:32:28 2009
New Revision: 19523

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=19523
Log:
02_xkbcrap_crash.patch: new patch. Fix crashes of gkb applet and 
gnome-screensaver (makes it unusable) when the XKB configuration is 
botched.

Added:
    desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch
Modified:
    desktop/unstable/libgnomekbd/debian/changelog
    desktop/unstable/libgnomekbd/debian/patches/series

Modified: desktop/unstable/libgnomekbd/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnomekbd/debian/changelog?rev=19523&op=diff
==============================================================================
--- desktop/unstable/libgnomekbd/debian/changelog (original)
+++ desktop/unstable/libgnomekbd/debian/changelog Fri Apr 10 21:32:28 2009
@@ -1,3 +1,11 @@
+libgnomekbd (2.24.0-3) unstable; urgency=low
+
+  * 02_xkbcrap_crash.patch: new patch. Fix crashes of gkb applet and 
+    gnome-screensaver (makes it unusable) when the XKB configuration is 
+    botched.
+
+ -- Josselin Mouette <joss at debian.org>  Fri, 10 Apr 2009 23:30:58 +0200
+
 libgnomekbd (2.24.0-2) unstable; urgency=low
 
   * Upload to unstable.

Added: desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch?rev=19523&op=file
==============================================================================
--- desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch (added)
+++ desktop/unstable/libgnomekbd/debian/patches/02_xkbcrap_crash.patch Fri Apr 10 21:32:28 2009
@@ -1,0 +1,193 @@
+GNOME #553915
+LP #273299
+Upstream commit r354
+
+Index: libgnomekbd-2.24.0/libgnomekbd/gkbd-indicator.c
+===================================================================
+--- libgnomekbd-2.24.0.orig/libgnomekbd/gkbd-indicator.c	2009-04-10 23:29:56.203964547 +0200
++++ libgnomekbd-2.24.0/libgnomekbd/gkbd-indicator.c	2009-04-10 23:30:00.743962368 +0200
+@@ -135,7 +135,12 @@ gkbd_indicator_fill (GkbdIndicator * gki
+ 	GtkNotebook *notebook = GTK_NOTEBOOK (gki);
+ 
+ 	for (grp = 0; grp < total_groups; grp++) {
+-		GtkWidget *page, *decorated_page;
++		GtkWidget *page, *decorated_page = NULL;
++		gchar *full_group_name =
++		    (grp <
++		     g_strv_length (globals.
++				    full_group_names)) ?
++		    globals.full_group_names[grp] : "?";
+ 		page = gkbd_indicator_prepare_drawing (gki, grp);
+ 
+ 		if (page == NULL)
+@@ -144,7 +149,7 @@ gkbd_indicator_fill (GkbdIndicator * gki
+ 		decorated_page =
+ 		    gkbd_indicator_plugin_manager_decorate_widget
+ 		    (&globals.plugin_manager, page, grp,
+-		     globals.full_group_names[grp], &globals.kbd_cfg);
++		     full_group_name, &globals.kbd_cfg);
+ 
+ 		page = decorated_page == NULL ? page : decorated_page;
+ 
+@@ -257,39 +262,46 @@ gkbd_indicator_prepare_drawing (GkbdIndi
+ 			    g_hash_table_new_full (g_str_hash, g_str_equal,
+ 						   g_free, NULL);
+ 
+-		if (xkl_engine_get_features (globals.engine) &
+-		    XKLF_MULTIPLE_LAYOUTS_SUPPORTED) {
+-			char *full_layout_name =
+-			    (char *) g_slist_nth_data (globals.kbd_cfg.
+-						       layouts_variants,
+-						       group);
+-			char *variant_name;
+-			if (!gkbd_keyboard_config_split_items
+-			    (full_layout_name, &layout_name,
+-			     &variant_name))
+-				/* just in case */
+-				layout_name = full_layout_name;
+-
+-			/* make it freeable */
+-			layout_name = g_strdup (layout_name);
+-
+-			if (globals.short_group_names != NULL) {
+-				char *short_group_name =
+-				    globals.short_group_names[group];
+-				if (short_group_name != NULL
+-				    && *short_group_name != '\0') {
+-					/* drop the long name */
+-					g_free (layout_name);
+-					layout_name =
+-					    g_strdup (short_group_name);
++
++		if (group < g_strv_length (globals.short_group_names)) {
++			if (xkl_engine_get_features (globals.engine) &
++			    XKLF_MULTIPLE_LAYOUTS_SUPPORTED) {
++				char *full_layout_name = (char *)
++				    g_slist_nth_data (globals.kbd_cfg.
++						      layouts_variants,
++						      group);
++				char *variant_name;
++				if (!gkbd_keyboard_config_split_items
++				    (full_layout_name, &layout_name,
++				     &variant_name))
++					/* just in case */
++					layout_name = full_layout_name;
++
++				/* make it freeable */
++				layout_name = g_strdup (layout_name);
++
++				if (globals.short_group_names != NULL) {
++					char *short_group_name =
++					    globals.short_group_names
++					    [group];
++					if (short_group_name != NULL
++					    && *short_group_name != '\0') {
++						/* drop the long name */
++						g_free (layout_name);
++						layout_name =
++						    g_strdup
++						    (short_group_name);
++					}
+ 				}
++			} else {
++				layout_name =
++				    g_strdup (globals.full_group_names
++					      [group]);
+ 			}
+-		} else
+-			layout_name =
+-			    g_strdup (globals.full_group_names[group]);
++		}
+ 
+ 		if (layout_name == NULL)
+-			layout_name = g_strdup ("?");
++			layout_name = g_strdup ("??");
+ 
+ 		/* Process layouts with repeating description */
+ 		ppln = &prev_layout_name;
+@@ -347,7 +359,8 @@ gkbd_indicator_update_tooltips (GkbdIndi
+ {
+ 	XklState *state = xkl_engine_get_current_state (globals.engine);
+ 	gchar *buf;
+-	if (state == NULL || state->group < 0)
++	if (state == NULL || state->group < 0
++	    || state->group >= g_strv_length (globals.full_group_names))
+ 		return;
+ 
+ 	buf = g_strdup_printf (globals.tooltips_format,
+@@ -401,12 +414,9 @@ gkbd_indicator_ind_cfg_changed (GConfCli
+ 					     &globals.kbd_cfg);
+ 	gkbd_indicator_config_activate (&globals.ind_cfg);
+ 
+-	gkbd_indicator_plugin_manager_toggle_plugins (&globals.
+-						      plugin_manager,
+-						      &globals.
+-						      plugin_container,
+-						      globals.ind_cfg.
+-						      enabled_plugins);
++	gkbd_indicator_plugin_manager_toggle_plugins
++	    (&globals.plugin_manager, &globals.plugin_container,
++	     globals.ind_cfg.enabled_plugins);
+ 
+ 	ForAllIndicators () {
+ 		gkbd_indicator_reinit_ui (gki);
+@@ -465,8 +475,8 @@ gkbd_indicator_kbd_cfg_callback (GkbdInd
+ 	}
+ 
+ 	gkbd_indicator_load_group_names ((const gchar **) xklrec->layouts,
+-					 (const gchar **) xklrec->
+-					 variants);
++					 (const gchar **)
++					 xklrec->variants);
+ 
+ 	ForAllIndicators () {
+ 		gkbd_indicator_reinit_ui (gki);
+@@ -664,8 +674,8 @@ gkbd_indicator_global_term (void)
+ 	gkbd_desktop_config_stop_listen (&globals.cfg);
+ 	gkbd_indicator_config_stop_listen (&globals.ind_cfg);
+ 
+-	gkbd_indicator_plugin_manager_term_initialized_plugins (&globals.
+-								plugin_manager);
++	gkbd_indicator_plugin_manager_term_initialized_plugins
++	    (&globals.plugin_manager);
+ 	gkbd_indicator_plugin_manager_term (&globals.plugin_manager);
+ 
+ 	gkbd_indicator_config_term (&globals.ind_cfg);
+@@ -756,18 +766,14 @@ gkbd_indicator_global_init (void)
+ 	gkbd_indicator_config_activate (&globals.ind_cfg);
+ 
+ 	gkbd_indicator_load_group_names ((const gchar **) xklrec->layouts,
+-					 (const gchar **) xklrec->
+-					 variants);
++					 (const gchar **)
++					 xklrec->variants);
+ 	g_object_unref (G_OBJECT (xklrec));
+ 
+ 	gkbd_indicator_plugin_manager_init (&globals.plugin_manager);
+-	gkbd_indicator_plugin_manager_init_enabled_plugins (&globals.
+-							    plugin_manager,
+-							    &globals.
+-							    plugin_container,
+-							    globals.
+-							    ind_cfg.
+-							    enabled_plugins);
++	gkbd_indicator_plugin_manager_init_enabled_plugins
++	    (&globals.plugin_manager, &globals.plugin_container,
++	     globals.ind_cfg.enabled_plugins);
+ 	gkbd_desktop_config_start_listen (&globals.cfg,
+ 					  (GConfClientNotifyFunc)
+ 					  gkbd_indicator_cfg_changed,
+@@ -821,10 +827,9 @@ gkbd_indicator_get_image_filename (guint
+ {
+ 	if (!globals.ind_cfg.show_flags)
+ 		return NULL;
+-	return gkbd_indicator_config_get_images_file (&globals.
+-						      ind_cfg,
+-						      &globals.
+-						      kbd_cfg, group);
++	return gkbd_indicator_config_get_images_file (&globals.ind_cfg,
++						      &globals.kbd_cfg,
++						      group);
+ }
+ 
+ gdouble

Modified: desktop/unstable/libgnomekbd/debian/patches/series
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/unstable/libgnomekbd/debian/patches/series?rev=19523&op=diff
==============================================================================
--- desktop/unstable/libgnomekbd/debian/patches/series (original)
+++ desktop/unstable/libgnomekbd/debian/patches/series Fri Apr 10 21:32:28 2009
@@ -1,2 +1,3 @@
 01_requires_private.patch
+02_xkbcrap_crash.patch
 99_ltmain_as-needed.patch




More information about the pkg-gnome-commits mailing list