g_utf8_pointer_to_offset returns offsets in char units and not in byte units.
authorSergio Villar Senin <svillar@igalia.com>
Mon, 9 Nov 2009 16:27:54 +0000 (17:27 +0100)
committerSergio Villar Senín <svillar@igalia.com>
Thu, 26 Nov 2009 17:07:35 +0000 (18:07 +0100)
We're incorrectly cutting names in UTF-8 when replying email due to errors computing lengths

Fixes NB#142722

src/modest-text-utils.c

index eca911c..cd209a8 100644 (file)
@@ -2193,13 +2193,9 @@ quote_name_part (GString **str, gchar **cur, gchar **start)
                        *start = g_utf8_next_char (*cur);
                } else {
                        *str = g_string_append_c (*str, '"');
                        *start = g_utf8_next_char (*cur);
                } else {
                        *str = g_string_append_c (*str, '"');
-                       *str = g_string_append_len (*str, *start,
-                                                   (g_utf8_pointer_to_offset (*start, blank) -
-                                                    g_utf8_pointer_to_offset (*start, *start)));
+                       *str = g_string_append_len (*str, *start, (blank - *start));
                        *str = g_string_append_c (*str, '"');
                        *str = g_string_append_c (*str, '"');
-                       *str = g_string_append_len (*str, blank,
-                                                   (g_utf8_pointer_to_offset (*start, *cur) -
-                                                    g_utf8_pointer_to_offset (*start, blank)));
+                       *str = g_string_append_len (*str, blank, (*cur - blank));
                        *str = g_string_append (*str, ";");
                        *start = g_utf8_next_char (*cur);
                }
                        *str = g_string_append (*str, ";");
                        *start = g_utf8_next_char (*cur);
                }