diff --git a/NEWS b/NEWS index c7e278e3cd9..17a77b34605 100644 --- a/NEWS +++ b/NEWS @@ -35,6 +35,9 @@ PHP NEWS . Fixed bug #76943 (Inconsistent stream_wrapper_restore() errors). (cmb) . Fixed bug #76735 (Incorrect message in fopen on invalid mode). (cmb) +- Tidy: + . Fixed bug #77040 (tidyNode::isHtml() is completely broken). (cmb) + 01 Oct 2020, PHP 7.3.23 - Core: diff --git a/ext/tidy/tests/bug77040.phpt b/ext/tidy/tests/bug77040.phpt new file mode 100644 index 00000000000..a1af00bdfb7 --- /dev/null +++ b/ext/tidy/tests/bug77040.phpt @@ -0,0 +1,27 @@ +--TEST-- +Bug #77040 (tidyNode::isHtml() is completely broken) +--SKIPIF-- + +--FILE-- +parseString("
text
"); +$p = $tidy->body()->child[0]; +var_dump($p->type === TIDY_NODETYPE_START); +var_dump($p->isHtml()); +$text = $p->child[0]; +var_dump($text->type === TIDY_NODETYPE_TEXT); +var_dump($text->isHtml()); +$cdata = $tidy->body()->child[1]->child[0]; +var_dump($cdata->type === TIDY_NODETYPE_CDATA); +var_dump($cdata->isHtml()); +?> +--EXPECT-- +bool(true) +bool(true) +bool(true) +bool(false) +bool(true) +bool(false) \ No newline at end of file diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index 0fde23cb11b..60170585ce5 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -1786,11 +1786,14 @@ static TIDY_NODE_METHOD(isHtml) { TIDY_FETCH_ONLY_OBJECT; - if (tidyNodeGetType(obj->node) & (TidyNode_Start | TidyNode_End | TidyNode_StartEnd)) { - RETURN_TRUE; + switch (tidyNodeGetType(obj->node)) { + case TidyNode_Start: + case TidyNode_End: + case TidyNode_StartEnd: + RETURN_TRUE; + default: + RETURN_FALSE; } - - RETURN_FALSE; } /* }}} */