diff options
Diffstat (limited to 'community/parcellite/history_menu_crash_patch')
-rw-r--r-- | community/parcellite/history_menu_crash_patch | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/community/parcellite/history_menu_crash_patch b/community/parcellite/history_menu_crash_patch new file mode 100644 index 000000000..961106839 --- /dev/null +++ b/community/parcellite/history_menu_crash_patch @@ -0,0 +1,39 @@ +Index: main.c +=================================================================== +--- main.c (revision 232) ++++ main.c (working copy) +@@ -1199,24 +1199,28 @@ + { + GString* string = g_string_new((gchar*)element->data); + /* Ellipsize text */ +- if (string->len > prefs.item_length) ++ glong len = g_utf8_strlen(string->str, string->len); ++ if (len > prefs.item_length) + { + switch (prefs.ellipsize) + { + case PANGO_ELLIPSIZE_START: +- string = g_string_erase(string, 0, string->len-(prefs.item_length)); ++ string = g_string_erase(string, 0, g_utf8_offset_to_pointer(string->str, len - prefs.item_length) - string->str); + string = g_string_prepend(string, "..."); + break; + case PANGO_ELLIPSIZE_MIDDLE: +- string = g_string_erase(string, (prefs.item_length/2), string->len-(prefs.item_length)); +- string = g_string_insert(string, (string->len/2), "..."); ++ ; /* to avoid wierd gcc error */ ++ gchar* p1 = g_utf8_offset_to_pointer(string->str, prefs.item_length / 2); ++ gchar* p2 = g_utf8_offset_to_pointer(string->str, len - prefs.item_length / 2); ++ string = g_string_erase(string, p1 - string->str, p2 - p1); ++ string = g_string_insert(string, p1 - string->str, "..."); + break; + case PANGO_ELLIPSIZE_END: +- string = g_string_truncate(string, prefs.item_length); ++ string = g_string_truncate(string, g_utf8_offset_to_pointer(string->str, prefs.item_length) - string->str); + string = g_string_append(string, "..."); + break; + } +- } ++ } + /* Remove control characters */ + gsize i = 0; + while (i < string->len) |