html.c: Fix non-list tag object for external custom emoji

Signed-off-by: Yonle <yonle@lecturify.net>
This commit is contained in:
Yonle 2023-07-25 23:33:14 +07:00 committed by Yonle
parent 52d3b5c8db
commit b2a274df76

28
html.c
View file

@ -56,8 +56,20 @@ xs_str *actor_name(xs_dict *actor)
/* replace the :shortnames: */ /* replace the :shortnames: */
if (!xs_is_null(p = xs_dict_get(actor, "tag"))) { 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 */ /* iterate the tags */
while (xs_list_iter(&p, &v)) { while (xs_list_iter(&tags, &v)) {
char *t = xs_dict_get(v, "type"); char *t = xs_dict_get(v, "type");
if (t && strcmp(t, "Emoji") == 0) { 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: */ /* replace the :shortnames: */
if (!xs_is_null(p = xs_dict_get(msg, "tag"))) { 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 */ /* iterate the tags */
while (xs_list_iter(&p, &v)) { while (xs_list_iter(&tags, &v)) {
char *t = xs_dict_get(v, "type"); char *t = xs_dict_get(v, "type");
if (t && strcmp(t, "Emoji") == 0) { if (t && strcmp(t, "Emoji") == 0) {