[evolution-patches] Patch for failure to define non-ASCII view name of menu
- From: "Simon.Zheng" <Simon Zheng Sun COM>
- To: evolution-patches gnome org
- Cc: sceri-evolution Sun COM
- Subject: [evolution-patches] Patch for failure to define non-ASCII view name of menu
- Date: Thu, 24 Nov 2005 18:57:43 +0800
Hi,
Here is the bug
http://bugzilla.gnome.org/show_bug.cgi?id=322311
Please help me review attached patch.
When adding new defined view name, an id needs to be generated from the
defined name.
gal_view_generate_string() traverses UTF-8 string and replace character
that is neither a alpha nor a numeral to '_'. This traverse is done
according to byte order, not character order. As we know, UTF-8
character is a multi-byte sequence. Sometimes, the first byte is
regarded as a alpha, but the second is not and is replaced as '_'.
Obviously, this character is invalid. And then build_menus() can't deal
with this kind of invalid strings, so the defined view won't be displayed.
Therefore, we should traverse the UTF-8 string according to character
order.
Thanks,
-Simon
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/widgets/ChangeLog,v
retrieving revision 1.139.2.1
diff -u -p -r1.139.2.1 ChangeLog
--- ChangeLog 30 Sep 2005 07:39:22 -0000 1.139.2.1
+++ ChangeLog 24 Nov 2005 10:29:40 -0000
@@ -1,3 +1,10 @@
+2005-11-25 Simon Zheng <simon zheng sun com>
+
+ * menus/gal-view-collection.c: (gal_view_generate_string):
+ Fix #322311. Using g_utf8_next_char() to traverses UTF-8
+ string and replace characters that are neither a alpha nor
+ a numeral.
+
2005-09-30 Li Yuan <li yuan sun com>
* menus/gal-define-views-dialog.c:
Index: menus/gal-view-collection.c
===================================================================
RCS file: /cvs/gnome/evolution/widgets/menus/gal-view-collection.c,v
retrieving revision 1.32
diff -u -p -r1.32 gal-view-collection.c
--- menus/gal-view-collection.c 23 Jun 2005 09:11:09 -0000 1.32
+++ menus/gal-view-collection.c 24 Nov 2005 10:29:40 -0000
@@ -107,9 +107,11 @@ gal_view_generate_string (GalViewCollect
ret_val = g_strdup(gal_view_get_title(view));
else
ret_val = g_strdup_printf("%s_%d", gal_view_get_title(view), which);
- for (pointer = ret_val; *pointer; pointer++) {
- if (!isalnum((guint) *pointer)) {
- *pointer = '_';
+ for (pointer = ret_val; *pointer; pointer = g_utf8_next_char(pointer)) {
+ if (!g_unichar_isalnum(g_utf8_get_char(pointer))) {
+ char *ptr = pointer;
+ for (; ptr < g_utf8_next_char(pointer); *ptr = '_', ptr++)
+ ;
}
}
return ret_val;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]