htex

simple incorrect html parser
git clone git://git.relim.de/htex.git
Log | Files | Refs | README

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:
Mhtml.c | 11+++++++----
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);