From 219f3e6808bdcf8a03cce404caa5cb6a008d00c5 Mon Sep 17 00:00:00 2001 From: grunfink Date: Thu, 18 Dec 2025 08:54:21 +0100 Subject: Fixed leak in emoji_reacted(). --- data.c | 6 +++--- html.c | 5 +++-- snac.h | 2 +- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/data.c b/data.c index 8f7050c..023bae6 100644 --- a/data.c +++ b/data.c @@ -1959,19 +1959,19 @@ xs_list *muted_list(snac *user) /** emojis react **/ -const xs_str *emoji_reacted(snac *user, const char *id) +xs_str *emoji_reacted(snac *user, const char *id) /* returns the emoji an user reacted to a message */ { xs *emojis = object_get_emoji_reacts(id); int c = 0; const char *v; - xs_dict *msg; while (xs_list_next(emojis, &v, &c)) { + xs *msg = NULL; if (object_get_by_md5(v, &msg)) { const xs_val *act = xs_dict_get(msg, "actor"); if (act && strcmp(act, user->actor) == 0) - return xs_dict_get(msg, "content"); + return xs_dup(xs_dict_get(msg, "content")); } } return NULL; diff --git a/html.c b/html.c index c317c1a..48273f2 100644 --- a/html.c +++ b/html.c @@ -2107,14 +2107,15 @@ xs_html *html_entry_controls(snac *user, const char *actor, /* the post textarea */ xs *div_id = xs_fmt("%s_reply", md5); xs *form_id = xs_fmt("%s_reply_form", md5); + xs *e_react = emoji_reacted(user, id); xs_html_add(controls, xs_html_tag("div", xs_html_tag("p", NULL), html_emoji( - user, L("Emoji react"), + user, L("Emoji react..."), div_id, form_id, ":neocat:", id, - emoji_reacted(user, id))), + e_react)), xs_html_tag("p", NULL)); } diff --git a/snac.h b/snac.h index 23f363c..bcff7f8 100644 --- a/snac.h +++ b/snac.h @@ -205,7 +205,7 @@ void unmute(snac *snac, const char *actor); int is_muted(snac *snac, const char *actor); xs_list *muted_list(snac *user); -const xs_str *emoji_reacted(snac *user, const char *id); +xs_str *emoji_reacted(snac *user, const char *id); int is_bookmarked(snac *user, const char *id); int bookmark(snac *user, const char *id); -- cgit v1.2.3