Jelajahi Sumber

Merge pull request 'html.c: Fix non-list tag object for external custom emoji' (#77) from yonle/snac2:master into master

Reviewed-on: https://codeberg.org/grunfink/snac2/pulls/77
grunfink 3 tahun lalu
induk
melakukan
b22786bd55
1 mengubah file dengan 26 tambahan dan 2 penghapusan
  1. 26 2
      html.c

+ 26 - 2
html.c

@@ -56,8 +56,20 @@ xs_str *actor_name(xs_dict *actor)
 
     /* replace the :shortnames: */
     if (!xs_is_null(p = xs_dict_get(actor, "tag"))) {
+        xs *tag = NULL;
+        if (xs_type(p) == XSTYPE_DICT) {
+            /* not a list */
+            tag = xs_list_new();
+            tag = xs_list_append(tag, p);
+        } else {
+            /* is a list */
+            tag = xs_dup(p);
+        }
+
+        xs_list *tags = tag;
+
         /* iterate the tags */
-        while (xs_list_iter(&p, &v)) {
+        while (xs_list_iter(&tags, &v)) {
             char *t = xs_dict_get(v, "type");
 
             if (t && strcmp(t, "Emoji") == 0) {
@@ -1031,8 +1043,20 @@ xs_str *html_entry(snac *snac, xs_str *os, const xs_dict *msg, int local,
 
         /* replace the :shortnames: */
         if (!xs_is_null(p = xs_dict_get(msg, "tag"))) {
+            xs *tag = NULL;
+            if (xs_type(p) == XSTYPE_DICT) {
+                /* not a list */
+                tag = xs_list_new();
+                tag = xs_list_append(tag, p);
+            } else {
+                /* is a list */
+                tag = xs_dup(p);
+            }
+
+            xs_list *tags = tag;
+
             /* iterate the tags */
-            while (xs_list_iter(&p, &v)) {
+            while (xs_list_iter(&tags, &v)) {
                 char *t = xs_dict_get(v, "type");
 
                 if (t && strcmp(t, "Emoji") == 0) {