commit 219f3e6

grunfink  ·  2025-12-18 07:54:21 +0000 UTC
parent fd45b94
Fixed leak in emoji_reacted().
3 files changed,  +7, -6
M data.c
M html.c
M snac.h
M data.c
+3, -3
 1@@ -1959,19 +1959,19 @@ xs_list *muted_list(snac *user)
 2 
 3 /** emojis react **/
 4 
 5-const xs_str *emoji_reacted(snac *user, const char *id)
 6+xs_str *emoji_reacted(snac *user, const char *id)
 7 /* returns the emoji an user reacted to a message */
 8 {
 9     xs *emojis = object_get_emoji_reacts(id);
10     int c = 0;
11     const char *v;
12-    xs_dict *msg;
13 
14     while (xs_list_next(emojis, &v, &c)) {
15+        xs *msg = NULL;
16         if (object_get_by_md5(v, &msg)) {
17             const xs_val *act = xs_dict_get(msg, "actor");
18             if (act && strcmp(act, user->actor) == 0)
19-                return xs_dict_get(msg, "content");
20+                return xs_dup(xs_dict_get(msg, "content"));
21         }
22     }
23     return NULL;
M html.c
+3, -2
 1@@ -2107,14 +2107,15 @@ xs_html *html_entry_controls(snac *user, const char *actor,
 2         /* the post textarea */
 3         xs *div_id  = xs_fmt("%s_reply", md5);
 4         xs *form_id = xs_fmt("%s_reply_form", md5);
 5+        xs *e_react = emoji_reacted(user, id);
 6 
 7         xs_html_add(controls, xs_html_tag("div",
 8             xs_html_tag("p", NULL),
 9             html_emoji(
10-                user, L("Emoji react"),
11+                user, L("Emoji react..."),
12                 div_id, form_id,
13                 ":neocat:", id,
14-                emoji_reacted(user, id))),
15+                e_react)),
16             xs_html_tag("p", NULL));
17     }
18 
M snac.h
+1, -1
1@@ -205,7 +205,7 @@ void unmute(snac *snac, const char *actor);
2 int is_muted(snac *snac, const char *actor);
3 xs_list *muted_list(snac *user);
4 
5-const xs_str *emoji_reacted(snac *user, const char *id);
6+xs_str *emoji_reacted(snac *user, const char *id);
7 
8 int is_bookmarked(snac *user, const char *id);
9 int bookmark(snac *user, const char *id);