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