diff --git a/src/document/html/parser/table.c b/src/document/html/parser/table.c index 65d9bcedb..dff2aabf9 100644 --- a/src/document/html/parser/table.c +++ b/src/document/html/parser/table.c @@ -508,7 +508,7 @@ skip_table(unsigned char *html, unsigned char *eof) while (1) { unsigned char *name; - int namelen; + int namelen, closing_tag = 0; while (html < eof && (*html != '<' @@ -518,11 +518,18 @@ skip_table(unsigned char *html, unsigned char *eof) if (html >= eof) return eof; + if (*name == '/') { + closing_tag = 1; + name++; namelen--; + } + if (!strlcasecmp(name, namelen, "TABLE", 5)) { - level++; - } else if (!strlcasecmp(name, namelen, "/TABLE", 6)) { - level--; - if (!level) return html; + if (!closing_tag) { + level++; + } else { + level--; + if (!level) return html; + } } } }