aboutsummaryrefslogtreecommitdiff
path: root/libdino
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2023-05-01 19:15:36 +0200
committerfiaxh <git@lightrise.org>2023-05-01 19:21:05 +0200
commit0bddf9f3dacc0945429979787348f41571f27518 (patch)
tree3259f07b59f081fac31fe62df3bfa7e13e78dd4c /libdino
parentec6c24c2b41fc9de704323ce895b2dc81549ca5e (diff)
downloaddino-0bddf9f3dacc0945429979787348f41571f27518.tar.gz
dino-0bddf9f3dacc0945429979787348f41571f27518.zip
Fix character counting for fallbacks
fixes #1420
Diffstat (limited to 'libdino')
-rw-r--r--libdino/src/service/message_processor.vala3
-rw-r--r--libdino/src/service/replies.vala3
2 files changed, 3 insertions, 3 deletions
diff --git a/libdino/src/service/message_processor.vala b/libdino/src/service/message_processor.vala
index 04c7d1a5..01687083 100644
--- a/libdino/src/service/message_processor.vala
+++ b/libdino/src/service/message_processor.vala
@@ -472,8 +472,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;