aboutsummaryrefslogtreecommitdiff
path: root/x11/libgnomekbd
diff options
context:
space:
mode:
authorJoe Marcus Clarke <marcus@FreeBSD.org>2007-03-21 22:16:18 +0000
committerJoe Marcus Clarke <marcus@FreeBSD.org>2007-03-21 22:16:18 +0000
commit2f325a4929c55de4e6360ee4c5f954ae9e107f7d (patch)
treec8a68017c263364043d17b80f10c86b7173fc502 /x11/libgnomekbd
parentce7c4e18d761e9ffa944a5148b604b04cb261f3a (diff)
downloadports-2f325a4929c55de4e6360ee4c5f954ae9e107f7d.tar.gz
ports-2f325a4929c55de4e6360ee4c5f954ae9e107f7d.zip
Fix a bug where static memory was being free'd as a key to a hash table.
This resulted in a crash when more than one keyboard layout was configured. See http://bugzilla.gnome.org/show_bug.cgi?id=421252 for more details. Reported by: Ivan Georgiev <ivan@kytex.bg>
Notes
Notes: svn path=/head/; revision=187950
Diffstat (limited to 'x11/libgnomekbd')
-rw-r--r--x11/libgnomekbd/Makefile1
-rw-r--r--x11/libgnomekbd/files/patch-libgnomekbd_gkbd-indicator.c18
2 files changed, 19 insertions, 0 deletions
diff --git a/x11/libgnomekbd/Makefile b/x11/libgnomekbd/Makefile
index db661e438d67..74ffc31b1314 100644
--- a/x11/libgnomekbd/Makefile
+++ b/x11/libgnomekbd/Makefile
@@ -8,6 +8,7 @@
PORTNAME= libgnomekbd
PORTVERSION= 2.18.0
+PORTREVISION= 1
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome2
diff --git a/x11/libgnomekbd/files/patch-libgnomekbd_gkbd-indicator.c b/x11/libgnomekbd/files/patch-libgnomekbd_gkbd-indicator.c
new file mode 100644
index 000000000000..5c2d4918c2c8
--- /dev/null
+++ b/x11/libgnomekbd/files/patch-libgnomekbd_gkbd-indicator.c
@@ -0,0 +1,18 @@
+--- libgnomekbd/gkbd-indicator.c.orig Wed Mar 21 17:11:21 2007
++++ libgnomekbd/gkbd-indicator.c Wed Mar 21 17:11:23 2007
+@@ -265,11 +265,14 @@ gkbd_indicator_prepare_drawing (GkbdIndi
+ layouts_variants,
+ group);
+ char *variant_name;
++ char *layout_name_ptr;
+ if (!gkbd_keyboard_config_split_items
+- (full_layout_name, &layout_name,
++ (full_layout_name, &layout_name_ptr,
+ &variant_name))
+ /* just in case */
+ layout_name = g_strdup (full_layout_name);
++ else
++ layout_name = g_strdup (layout_name_ptr);
+
+ if (globals.short_group_names != NULL) {
+ char *short_group_name =