summaryrefslogtreecommitdiff
path: root/vcl/unx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/unx')
-rw-r--r--vcl/unx/gtk/gtksalframe.cxx10
-rw-r--r--vcl/unx/gtk3/gtk3gtkframe.cxx10
2 files changed, 16 insertions, 4 deletions
diff --git a/vcl/unx/gtk/gtksalframe.cxx b/vcl/unx/gtk/gtksalframe.cxx
index ff540dc8fd1d..d57ec7162d69 100644
--- a/vcl/unx/gtk/gtksalframe.cxx
+++ b/vcl/unx/gtk/gtksalframe.cxx
@@ -3650,8 +3650,14 @@ void GtkSalFrame::IMHandler::signalIMPreeditChanged( GtkIMContext*, gpointer im_
ExtTextInputAttr sal_attr = ExtTextInputAttr::NONE;
pango_attr_iterator_range (iter, &start, &end);
- if (end == G_MAXINT)
- end = pText ? strlen (pText) : 0;
+ if (start == G_MAXINT || end == G_MAXINT)
+ {
+ auto len = pText ? g_utf8_strlen(pText, -1) : 0;
+ if (end == G_MAXINT)
+ end = len;
+ if (start == G_MAXINT)
+ start = len;
+ }
if (end == start)
continue;
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index c8c98f5c5255..40e1d1412d6a 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -4006,8 +4006,14 @@ void GtkSalFrame::IMHandler::signalIMPreeditChanged( GtkIMContext*, gpointer im_
ExtTextInputAttr sal_attr = ExtTextInputAttr::NONE;
pango_attr_iterator_range (iter, &start, &end);
- if (end == G_MAXINT)
- end = pText ? strlen (pText) : 0;
+ if (start == G_MAXINT || end == G_MAXINT)
+ {
+ auto len = pText ? g_utf8_strlen(pText, -1) : 0;
+ if (end == G_MAXINT)
+ end = len;
+ if (start == G_MAXINT)
+ start = len;
+ }
if (end == start)
continue;