diff options
author | Tjerk Meesters <datibbaw@php.net> | 2014-08-27 22:59:18 +0800 |
---|---|---|
committer | Tjerk Meesters <datibbaw@php.net> | 2014-08-27 23:00:11 +0800 |
commit | a79b9333848829d78580b1c7287539f319883631 (patch) | |
tree | c3386bd7a10a15974189751e94ebe25b87df1cc6 /Zend/tests/strlen.phpt | |
parent | a831bd40d0c1fcfa52cc65231c06d3b9b9f77f92 (diff) | |
download | php-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.phpt | 51 |
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" |