From 799ff50072ada902b70ff7ccfa037fe9aba8d897 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Mon, 1 May 2023 12:46:47 -0500 Subject: [PATCH] Use proper unicode codepoint offsets for fallback --- src/main/java/eu/siacs/conversations/entities/Message.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index c91b1fb0f9380fbbbefd5cba8ea51a1f3bbc9793..46bbe534626f010e3d3254a182240f8d647233fd 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -397,7 +397,7 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable final Element fallback = new Element("fallback", "urn:xmpp:fallback:0").setAttribute("for", "urn:xmpp:reply:0"); fallback.addChild("body", "urn:xmpp:fallback:0") .setAttribute("start", "0") - .setAttribute("end", "" + m.body.length()); + .setAttribute("end", "" + m.body.codePointCount(0, m.body.length())); m.addPayload(fallback); return m; } @@ -516,9 +516,9 @@ public class Message extends AbstractEntity implements AvatarService.Avatarable spans.sort((x, y) -> y.first.compareTo(x.first)); try { for (Pair span : spans) { - body.delete(span.first, span.second); + body.delete(body.offsetByCodePoints(0, span.first.intValue()), body.offsetByCodePoints(0, span.second.intValue())); } - } catch (final StringIndexOutOfBoundsException e) { spans.clear(); } + } catch (final IndexOutOfBoundsException e) { spans.clear(); } if (spans.isEmpty() && getOob() != null) { return body.toString().replace(getOob().toString(), "");