[FIX/WIP] Fix leak, add formatting chars on XML

This commit is contained in:
LDA 2024-08-01 19:17:43 +02:00
commit 8d1dc09c54

View file

@ -183,7 +183,6 @@ ParseLine(XEP393Element *elem, StringRect line)
size_t ch_idx, chars = StrViewChars(line, 0); size_t ch_idx, chars = StrViewChars(line, 0);
size_t text_start = 0; size_t text_start = 0;
size_t i; size_t i;
bool managed = false;
for (ch_idx = 0; ch_idx < chars; ch_idx++) for (ch_idx = 0; ch_idx < chars; ch_idx++)
{ {
@ -210,7 +209,6 @@ ParseLine(XEP393Element *elem, StringRect line)
} \ } \
line_item = CreateElementVessel(elem, XEP393_TEXT); \ line_item = CreateElementVessel(elem, XEP393_TEXT); \
line_item->text_data = gen; \ line_item->text_data = gen; \
managed = true; \
} \ } \
\ \
span_item = CreateElementVessel(elem, sym); \ span_item = CreateElementVessel(elem, sym); \
@ -227,7 +225,6 @@ ParseLine(XEP393Element *elem, StringRect line)
/* TODO: Can we troll and introduce | as a Parsee extension? */ /* TODO: Can we troll and introduce | as a Parsee extension? */
} }
if (!managed)
{ {
char *temp, *gen = NULL, chara[2] = { 0, '\0' }; char *temp, *gen = NULL, chara[2] = { 0, '\0' };
for (i = text_start; i < chars; i++) for (i = text_start; i < chars; i++)
@ -307,27 +304,31 @@ ShoveXML(XEP393Element *element, XMLElement *xmlparent)
case XEP393_ITALIC: case XEP393_ITALIC:
head = XMLCreateTag("i"); head = XMLCreateTag("i");
XMLAddChild(xmlparent, head); XMLAddChild(xmlparent, head);
XMLAddChild(head, XMLCreateText("_"));
break;
case XEP393_MONO:
head = XMLCreateTag("code");
XMLAddChild(xmlparent, head);
XMLAddChild(head, XMLCreateText("`"));
break;
case XEP393_SRKE:
head = XMLCreateTag("s");
XMLAddChild(xmlparent, head);
XMLAddChild(head, XMLCreateText("~"));
break;
case XEP393_EMPH:
head = XMLCreateTag("strong");
XMLAddChild(xmlparent, head);
XMLAddChild(head, XMLCreateText("*"));
break; break;
case XEP393_LINE: case XEP393_LINE:
head = XMLCreateTag("p"); head = XMLCreateTag("p");
XMLAddChild(xmlparent, head); XMLAddChild(xmlparent, head);
break; break;
case XEP393_SRKE:
head = XMLCreateTag("s");
XMLAddChild(xmlparent, head);
break;
case XEP393_QUOT: case XEP393_QUOT:
head = XMLCreateTag("blockquote"); head = XMLCreateTag("blockquote");
XMLAddChild(xmlparent, head); XMLAddChild(xmlparent, head);
break; break;
case XEP393_EMPH:
head = XMLCreateTag("strong");
XMLAddChild(xmlparent, head);
break;
case XEP393_MONO:
head = XMLCreateTag("code");
XMLAddChild(xmlparent, head);
break;
default: break; default: break;
} }
if (ArraySize(element->children) == 0 && if (ArraySize(element->children) == 0 &&
@ -340,16 +341,25 @@ ShoveXML(XEP393Element *element, XMLElement *xmlparent)
for (i = 0; i < ArraySize(element->children); i++) for (i = 0; i < ArraySize(element->children); i++)
{ {
XEP393Element *sub = ArrayGet(element->children, i); XEP393Element *sub = ArrayGet(element->children, i);
if (sub->type == XEP393_TEXT && !sub->text_data)
{
XMLFreeElement(ArrayDelete(
xmlparent->children,
ArraySize(xmlparent->children) - 1
));
continue;
}
ShoveXML(sub, head); ShoveXML(sub, head);
} }
switch (element->type)
{
case XEP393_ITALIC:
XMLAddChild(head, XMLCreateText("_"));
break;
case XEP393_MONO:
XMLAddChild(head, XMLCreateText("`"));
break;
case XEP393_SRKE:
XMLAddChild(head, XMLCreateText("~"));
break;
case XEP393_EMPH:
XMLAddChild(head, XMLCreateText("*"));
break;
default: break;
}
} }
#include <StringStream.h> #include <StringStream.h>