truncate rss title at utf8 char boundary

Advance a whole utf8 char at a time while looking for where to
truncate the title.
This commit is contained in:
Alexandre Oliva
2026-01-01 16:27:21 +01:00
committed by grunfink
parent 20eba6f519
commit 89053095eb
2 changed files with 11 additions and 1 deletions
+2
View File
@@ -2,6 +2,8 @@
## UNRELEASED
Truncate RSS titles at UTF-8 character boundaries (contributed by lxo).
Link contacts to single-user people pages. Also, user's posts are shown (contributed by lxo).
Added emoji reactions (contributed by violette).
+9 -1
View File
@@ -10,6 +10,7 @@
#include "xs_openssl.h"
#include "xs_json.h"
#include "xs_http.h"
#include "xs_unicode.h"
#include "snac.h"
@@ -74,7 +75,14 @@ xs_str *rss_from_timeline(snac *user, const xs_list *timeline,
title = xs_regex_replace_i(title, "&[^;]+;", " ");
int i;
for (i = 0; title[i] && title[i] != '\n' && i < 50; i++);
for (i = 0; title[i] && title[i] != '\n' && i < 50; ) {
const char *p = &title[i];
unsigned int cp = xs_utf8_dec(&p);
int n = p - title;
if (cp == 0xfffd || n > 50)
break;
i = n;
}
if (title[i] != '\0') {
title[i] = '\0';