aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrunfink <grunfink@comam.es>2025-12-18 08:54:21 +0100
committergrunfink <grunfink@comam.es>2025-12-18 08:54:21 +0100
commit219f3e6808bdcf8a03cce404caa5cb6a008d00c5 (patch)
tree85a417c87c274f1d5b853f5c56692a82a7375891
parentfd45b94c09233221d7b98a7270c768272bd25ac9 (diff)
Fixed leak in emoji_reacted().
-rw-r--r--data.c6
-rw-r--r--html.c5
-rw-r--r--snac.h2
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);