aboutsummaryrefslogtreecommitdiffstats
path: root/x11/libgnomekbd
diff options
context:
space:
mode:
authormarcus <marcus@FreeBSD.org>2007-03-22 06:16:18 +0800
committermarcus <marcus@FreeBSD.org>2007-03-22 06:16:18 +0800
commit2f4d0e87cc9af47a4c56277f2c710e771d5864e6 (patch)
tree3244454bb80a3cfbeedddb804934057a30f83801 /x11/libgnomekbd
parentc460dbe283ff927191f6c98602f17f6005b2f8ae (diff)
downloadfreebsd-ports-gnome-2f4d0e87cc9af47a4c56277f2c710e771d5864e6.tar.gz
freebsd-ports-gnome-2f4d0e87cc9af47a4c56277f2c710e771d5864e6.tar.zst
freebsd-ports-gnome-2f4d0e87cc9af47a4c56277f2c710e771d5864e6.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>
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 =