]> granicus.if.org Git - php/commitdiff
- Fix the fix (wrong behavior)
authorFelipe Pena <felipe@php.net>
Mon, 8 Nov 2010 20:26:14 +0000 (20:26 +0000)
committerFelipe Pena <felipe@php.net>
Mon, 8 Nov 2010 20:26:14 +0000 (20:26 +0000)
ext/spl/spl_iterators.c
ext/spl/tests/bug50579.phpt

index dc6f17bac0100d39bb43c2cfab695ff18b0da608..9c1750b2192777224a4b3bc2e8c2b5086b876356 100755 (executable)
@@ -1796,7 +1796,7 @@ SPL_METHOD(RegexIterator, accept)
                break;
 
        case REGIT_MODE_REPLACE:
-               replacement = zend_read_property(intern->std.ce, intern->inner.zobject, "replacement", sizeof("replacement")-1, 1 TSRMLS_CC);
+               replacement = zend_read_property(intern->std.ce, getThis(), "replacement", sizeof("replacement")-1, 1 TSRMLS_CC);
                result = php_pcre_replace_impl(intern->u.regex.pce, subject, subject_len, replacement, 0, &result_len, -1, &count TSRMLS_CC);
                
                if (intern->u.regex.flags & REGIT_USE_KEY) {
index 3045228ef0c14de24614831d2fec62d5c07fa16d..e32262a743f85444155b433729ce59ddee07843e 100644 (file)
@@ -9,23 +9,23 @@ class foo extends ArrayIterator {
                'test1'=>'test888', 
                'test2'=>'what?', 
                'test3'=>'test999'));
-               $this->replacement = '[$1]';
        }
 }
 $h = new foo;
 $i = new RegexIterator($h, '/^test(.*)/', RegexIterator::REPLACE);
-$h->replacement = '[$0]';
+$i->replacement = '[$0]';
 foreach ($i as $name=>$value) {
        echo $name . '=>' . $value . "\n";
 }
   
-$h->replacement = '$1';
+$i->replacement = '$1';
 foreach ($i as $name=>$value) {
        echo $name . '=>' . $value . "\n";
 }
 
 $h = new foo;
 $i = new RegexIterator($h, '/^test(.*)/', RegexIterator::REPLACE);
+$i->replacement = '[$1]';
 foreach ($i as $name=>$value) {
        echo $name . '=>' . $value . "\n";
 }