summaryrefslogtreecommitdiff
path: root/community/parcellite/history_menu_crash_patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/parcellite/history_menu_crash_patch')
-rw-r--r--community/parcellite/history_menu_crash_patch39
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)