From b3bca12cf6e3e8a6aa2c314f2115ba5fed52ced1 Mon Sep 17 00:00:00 2001 From: Nuno Lopes Date: Sat, 20 Jan 2007 12:58:20 +0000 Subject: [PATCH] MFB: fix crash & add tests --- ext/tidy/tests/024.phpt | 41 +++++++++++++++++++++++++++++++++ ext/tidy/tests/025.phpt | 50 +++++++++++++++++++++++++++++++++++++++++ ext/tidy/tests/026.phpt | 24 ++++++++++++++++++++ ext/tidy/tidy.c | 16 +++++++++---- 4 files changed, 127 insertions(+), 4 deletions(-) create mode 100644 ext/tidy/tests/024.phpt create mode 100644 ext/tidy/tests/025.phpt create mode 100644 ext/tidy/tests/026.phpt diff --git a/ext/tidy/tests/024.phpt b/ext/tidy/tests/024.phpt new file mode 100644 index 0000000000..c3d08cd6ea --- /dev/null +++ b/ext/tidy/tests/024.phpt @@ -0,0 +1,41 @@ +--TEST-- +libtidy handling of 'new-blocklevel-tags' +--SKIPIF-- + +--FILE-- + + + + +'; + +$config = array( +'new-blocklevel-tags' => 'wps:block,wps:var,wps:value' +); + +$tidy = tidy_parse_string($contents, $config, 'utf8'); +$tidy->cleanRepair(); + +var_dump($tidy->value); + +?> +--EXPECT-- +string(117) " + + + + + + + + + +" diff --git a/ext/tidy/tests/025.phpt b/ext/tidy/tests/025.phpt new file mode 100644 index 0000000000..a7bd544d67 --- /dev/null +++ b/ext/tidy/tests/025.phpt @@ -0,0 +1,50 @@ +--TEST-- +tidyNode tests +--SKIPIF-- + +--FILE-- +isPhp()); +var_dump($node->isText()); +var_dump($node->isComment()); +var_dump($node->hasSiblings()); +var_dump((string)$node); + +$tidy=tidy_parse_string('<% %>'); +var_dump($tidy->Root()->child[0]->isAsp()); + +$tidy=tidy_parse_string('<# #>'); +var_dump($tidy->Root()->child[0]->isJste()); + +$tidy=tidy_parse_string('text'); +var_dump($tidy->Root()->child[0]->child[1]->child[0]->isText()); + +$tidy=tidy_parse_string(''); +$n = $tidy->Root()->child[0]->child[1]->child[0]; +var_dump($n->isComment()); +var_dump((string)$n); +var_dump((bool)$n); +var_dump((double)$n); +var_dump((int)$n); +var_dump($tidy->Root()->child[0]->child[0]->hasSiblings()); + +?> +--EXPECT-- +bool(false) +bool(false) +bool(false) +bool(false) +string(0) "" +bool(true) +bool(true) +bool(true) +bool(true) +string(16) "" +bool(true) +float(0) +int(0) +bool(true) diff --git a/ext/tidy/tests/026.phpt b/ext/tidy/tests/026.phpt new file mode 100644 index 0000000000..24a1e6f4a7 --- /dev/null +++ b/ext/tidy/tests/026.phpt @@ -0,0 +1,24 @@ +--TEST-- +tidy.clean_output test +--SKIPIF-- + +--INI-- +tidy.clean_output=1 +--FILE-- + +xpto

'; + +?> + +--EXPECT-- + + + + + + +

xpto

+ + diff --git a/ext/tidy/tidy.c b/ext/tidy/tidy.c index 7765e2bf55..7fe50b7fc7 100644 --- a/ext/tidy/tidy.c +++ b/ext/tidy/tidy.c @@ -729,14 +729,22 @@ static int tidy_node_cast_handler(zval *in, zval *out, int type, void *extra TSR case IS_STRING: obj = (PHPTidyObj *)zend_object_store_get_object(in TSRMLS_CC); tidyBufInit(&buf); - tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf); - ZVAL_STRINGL(out, (char *) buf.bp, buf.size, 0); + if (obj->ptdoc) { + tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf); + ZVAL_STRINGL(out, (char *) buf.bp, buf.size-1, 0); + } else { + ZVAL_EMPTY_STRING(out); + } break; case IS_UNICODE: obj = (PHPTidyObj *)zend_object_store_get_object(in TSRMLS_CC); - tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf); - ZVAL_U_STRINGL(obj->converter->conv, out, (char *) buf.bp, buf.size, 0); + if (obj->ptdoc) { + tidyNodeGetText(obj->ptdoc->doc, obj->node, &buf); + ZVAL_U_STRINGL(obj->converter->conv, out, (char *) buf.bp, buf.size-1, 0); + } else { + ZVAL_EMPTY_UNICODE(out); + } break; default: -- 2.40.0