Просмотр исходного кода

Fixed leak in emoji_reacted().

grunfink 7 месяцев назад
Родитель
Сommit
219f3e6808
3 измененных файлов с 7 добавлено и 6 удалено
  1. 3 3
      data.c
  2. 3 2
      html.c
  3. 1 1
      snac.h

+ 3 - 3
data.c

@@ -1959,19 +1959,19 @@ xs_list *muted_list(snac *user)
 
 
 /** emojis react **/
 /** 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 */
 /* returns the emoji an user reacted to a message */
 {
 {
     xs *emojis = object_get_emoji_reacts(id);
     xs *emojis = object_get_emoji_reacts(id);
     int c = 0;
     int c = 0;
     const char *v;
     const char *v;
-    xs_dict *msg;
 
 
     while (xs_list_next(emojis, &v, &c)) {
     while (xs_list_next(emojis, &v, &c)) {
+        xs *msg = NULL;
         if (object_get_by_md5(v, &msg)) {
         if (object_get_by_md5(v, &msg)) {
             const xs_val *act = xs_dict_get(msg, "actor");
             const xs_val *act = xs_dict_get(msg, "actor");
             if (act && strcmp(act, user->actor) == 0)
             if (act && strcmp(act, user->actor) == 0)
-                return xs_dict_get(msg, "content");
+                return xs_dup(xs_dict_get(msg, "content"));
         }
         }
     }
     }
     return NULL;
     return NULL;

+ 3 - 2
html.c

@@ -2107,14 +2107,15 @@ xs_html *html_entry_controls(snac *user, const char *actor,
         /* the post textarea */
         /* the post textarea */
         xs *div_id  = xs_fmt("%s_reply", md5);
         xs *div_id  = xs_fmt("%s_reply", md5);
         xs *form_id = xs_fmt("%s_reply_form", 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_add(controls, xs_html_tag("div",
             xs_html_tag("p", NULL),
             xs_html_tag("p", NULL),
             html_emoji(
             html_emoji(
-                user, L("Emoji react"),
+                user, L("Emoji react..."),
                 div_id, form_id,
                 div_id, form_id,
                 ":neocat:", id,
                 ":neocat:", id,
-                emoji_reacted(user, id))),
+                e_react)),
             xs_html_tag("p", NULL));
             xs_html_tag("p", NULL));
     }
     }
 
 

+ 1 - 1
snac.h

@@ -205,7 +205,7 @@ void unmute(snac *snac, const char *actor);
 int is_muted(snac *snac, const char *actor);
 int is_muted(snac *snac, const char *actor);
 xs_list *muted_list(snac *user);
 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 is_bookmarked(snac *user, const char *id);
 int bookmark(snac *user, const char *id);
 int bookmark(snac *user, const char *id);