mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-29 11:41:22 +03:00
html: Make sure that character data mode is reset
This commit is contained in:
34
HTMLparser.c
34
HTMLparser.c
@ -3649,6 +3649,8 @@ htmlParseStartTag(htmlParserCtxtPtr ctxt) {
|
||||
int i;
|
||||
int discardtag = 0;
|
||||
|
||||
ctxt->endCheckState = 0;
|
||||
|
||||
SKIP(1);
|
||||
|
||||
atts = ctxt->atts;
|
||||
@ -3841,6 +3843,8 @@ htmlParseEndTag(htmlParserCtxtPtr ctxt)
|
||||
const xmlChar *oldname;
|
||||
int i;
|
||||
|
||||
ctxt->endCheckState = 0;
|
||||
|
||||
SKIP(2);
|
||||
|
||||
if (CUR == '>') {
|
||||
@ -4043,13 +4047,6 @@ htmlParseElementInternal(htmlParserCtxtPtr ctxt) {
|
||||
if (name == NULL)
|
||||
return(0);
|
||||
|
||||
/*
|
||||
* Lookup the info for that element.
|
||||
*/
|
||||
info = htmlTagLookup(name);
|
||||
if (info != NULL)
|
||||
ctxt->endCheckState = info->dataMode;
|
||||
|
||||
if (ctxt->record_info)
|
||||
htmlNodeInfoPush(ctxt, &node_info);
|
||||
|
||||
@ -4071,6 +4068,11 @@ htmlParseElementInternal(htmlParserCtxtPtr ctxt) {
|
||||
return(0);
|
||||
SKIP(1);
|
||||
|
||||
/*
|
||||
* Lookup the info for that element.
|
||||
*/
|
||||
info = htmlTagLookup(name);
|
||||
|
||||
/*
|
||||
* Check for an Empty Element from DTD definition
|
||||
*/
|
||||
@ -4084,6 +4086,9 @@ htmlParseElementInternal(htmlParserCtxtPtr ctxt) {
|
||||
return(0);
|
||||
}
|
||||
|
||||
if (info != NULL)
|
||||
ctxt->endCheckState = info->dataMode;
|
||||
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -4862,13 +4867,6 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
||||
if (name == NULL)
|
||||
break;
|
||||
|
||||
/*
|
||||
* Lookup the info for that element.
|
||||
*/
|
||||
info = htmlTagLookup(name);
|
||||
if (info != NULL)
|
||||
ctxt->endCheckState = info->dataMode;
|
||||
|
||||
/*
|
||||
* Check for an Empty Element labeled the XML/SGML way
|
||||
*/
|
||||
@ -4889,6 +4887,11 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
||||
break;
|
||||
SKIP(1);
|
||||
|
||||
/*
|
||||
* Lookup the info for that element.
|
||||
*/
|
||||
info = htmlTagLookup(name);
|
||||
|
||||
/*
|
||||
* Check for an Empty Element from DTD definition
|
||||
*/
|
||||
@ -4902,6 +4905,9 @@ htmlParseTryOrFinish(htmlParserCtxtPtr ctxt, int terminate) {
|
||||
htmlnamePop(ctxt);
|
||||
}
|
||||
|
||||
if (info != NULL)
|
||||
ctxt->endCheckState = info->dataMode;
|
||||
|
||||
if (ctxt->record_info)
|
||||
htmlNodeInfoPush(ctxt, &node_info);
|
||||
|
||||
|
Reference in New Issue
Block a user