commit 18e781e88b49526a72b1405d9b0baeeb13e4fc58
parent b1f55963f829e894123a128ee1a5d593e0cb30a8
Author: Robin <kroekerrobin@gmail.com>
Date: Mon, 14 Aug 2023 22:24:26 +0200
Check if there is a closing tag
Diffstat:
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/html.c b/html.c
@@ -371,7 +371,8 @@ struct tag *parseTag(char *text, size_t offset, enum state state, struct tag_lis
if (cp == GREATER_THAN_SIGN)
{
struct tag *closedTag = closeLastUnclosedTag(tagList, endTag, off+ret);
- setInnerHtmlEndOffset(closedTag, text, off);
+ if (closedTag != NULL)
+ setInnerHtmlEndOffset(closedTag, text, off);
free(endTag);
endTag = malloc(sizeof(char));
endTag[0] = 0;
@@ -517,7 +518,8 @@ struct tag *parseTag(char *text, size_t offset, enum state state, struct tag_lis
if (cp == GREATER_THAN_SIGN)
{
struct tag *closedTag = closeLastUnclosedTag(tagList, endTag, off+ret);
- setInnerHtmlEndOffset(closedTag, text, off);
+ if (closedTag != NULL)
+ setInnerHtmlEndOffset(closedTag, text, off);
free(endTag);
endTag = malloc(sizeof(char));
endTag[0] = 0;
@@ -544,7 +546,8 @@ struct tag *parseTag(char *text, size_t offset, enum state state, struct tag_lis
if (cp == GREATER_THAN_SIGN)
{
struct tag *closedTag = closeLastUnclosedTag(tagList, endTag, off+ret);
- setInnerHtmlEndOffset(closedTag, text, off);
+ if (closedTag != NULL)
+ setInnerHtmlEndOffset(closedTag, text, off);
free(endTag);
endTag = malloc(sizeof(char));
endTag[0] = 0;
@@ -771,7 +774,7 @@ void filterHtml(char *text, struct find_opts *opts)
{
struct tag_list *tagList = initTagList();
struct tag_list *foundTags = initTagList();
- size_t len = parseDoctype(text);
+ size_t len = parseDoctype(text); // FIXME: not only look in first line
if (len)
text += len;
struct tag *rootTag = parseTag(text, 0, STATE_INNER_TEXT, tagList);