summaryrefslogtreecommitdiff
path: root/Zend/tests/strlen.phpt
diff options
context:
space:
mode:
authorTjerk Meesters <datibbaw@php.net>2014-08-27 22:59:18 +0800
committerTjerk Meesters <datibbaw@php.net>2014-08-27 23:00:11 +0800
commita79b9333848829d78580b1c7287539f319883631 (patch)
treec3386bd7a10a15974189751e94ebe25b87df1cc6 /Zend/tests/strlen.phpt
parenta831bd40d0c1fcfa52cc65231c06d3b9b9f77f92 (diff)
downloadphp-git-a79b9333848829d78580b1c7287539f319883631.tar.gz
Fixed corruption of execute_data when ZEND_STRLEN has to cast an object to string.
Diffstat (limited to 'Zend/tests/strlen.phpt')
-rw-r--r--Zend/tests/strlen.phpt51
1 files changed, 51 insertions, 0 deletions
diff --git a/Zend/tests/strlen.phpt b/Zend/tests/strlen.phpt
new file mode 100644
index 0000000000..ddf0141386
--- /dev/null
+++ b/Zend/tests/strlen.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Fixed execute_data corruption with __toString()
+--FILE--
+<?php
+
+class Test
+{
+ public $something = 'hello';
+
+ public function __toString()
+ {
+ return $this->something;
+ }
+}
+
+$t = new Test;
+var_dump(strlen($t));
+var_dump($t->something);
+
+class Test2
+{
+ public $something;
+
+ public function __construct(&$a)
+ {
+ $this->something = &$a;
+ }
+
+ public function __toString()
+ {
+ return $this->something;
+ }
+}
+
+$a = 'world';
+$t2 = new Test2($a);
+var_dump(strlen($t2));
+var_dump($t2->something);
+var_dump($a);
+
+$a = 'foobar';
+var_dump(strlen($t2));
+var_dump($t2->something);
+--EXPECT--
+int(5)
+string(5) "hello"
+int(5)
+string(5) "world"
+string(5) "world"
+int(6)
+string(6) "foobar"