From f44ded88c8bea45d85a1e7b2641c99085c9d121d Mon Sep 17 00:00:00 2001 From: fiaxh Date: Mon, 1 May 2023 19:15:36 +0200 Subject: [PATCH] Fix character counting for fallbacks fixes #1420 --- libdino/src/service/message_processor.vala | 3 +-- libdino/src/service/replies.vala | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libdino/src/service/message_processor.vala b/libdino/src/service/message_processor.vala index 2af68e2e..9653a7db 100644 --- a/libdino/src/service/message_processor.vala +++ b/libdino/src/service/message_processor.vala @@ -496,8 +496,7 @@ public class MessageProcessor : StreamInteractionModule, Object { string fallback = FallbackBody.get_quoted_fallback_body(content_item); - long fallback_length = fallback.length; - var fallback_location = new Xep.FallbackIndication.FallbackLocation(0, (int)fallback_length); + var fallback_location = new Xep.FallbackIndication.FallbackLocation(0, (int)fallback.char_count()); Xep.FallbackIndication.set_fallback(new_stanza, new Xep.FallbackIndication.Fallback(Xep.Replies.NS_URI, new Xep.FallbackIndication.FallbackLocation[] { fallback_location })); return fallback; diff --git a/libdino/src/service/replies.vala b/libdino/src/service/replies.vala index 2bb10e0b..58d44b37 100644 --- a/libdino/src/service/replies.vala +++ b/libdino/src/service/replies.vala @@ -105,7 +105,8 @@ namespace Dino { string body = message.body; foreach (var fallback in message.get_fallbacks()) { if (fallback.ns_uri == Xep.Replies.NS_URI && message.quoted_item_id > 0) { - body = body[0:fallback.locations[0].from_char] + body[fallback.locations[0].to_char:body.length]; + body = body[0:body.index_of_nth_char(fallback.locations[0].from_char)] + + body[body.index_of_nth_char(fallback.locations[0].to_char):body.length]; } } return body;