File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / php / tests / lang / bug22510.phpt
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:48:06 2012 UTC (12 years, 4 months ago) by misho
Branches: php, MAIN
CVS tags: v5_4_3elwix, v5_4_29p0, v5_4_29, v5_4_20p0, v5_4_20, v5_4_17p0, v5_4_17, v5_3_10, HEAD
php

    1: --TEST--
    2: Bug #22510 (segfault among complex references)
    3: --INI--
    4: error_reporting=E_ALL | E_DEPRECATED
    5: --FILE--
    6: <?php
    7: class foo 
    8: {
    9: 	public $list = array();
   10: 
   11: 	function finalize() {
   12: 		print __CLASS__."::".__FUNCTION__."\n";
   13: 		$cl = &$this->list;
   14: 	}
   15: 
   16: 	function &method1() {
   17: 		print __CLASS__."::".__FUNCTION__."\n";
   18: 		return @$this->foo;
   19: 	}
   20: 
   21: 	function &method2() {
   22: 		print __CLASS__."::".__FUNCTION__."\n";
   23: 		return $this->foo;
   24: 	}
   25: 
   26: 	function method3() {
   27: 		print __CLASS__."::".__FUNCTION__."\n";
   28: 		return @$this->foo;
   29: 	}
   30: }
   31: 
   32: class bar 
   33: {
   34: 	function run1() {
   35: 		print __CLASS__."::".__FUNCTION__."\n";
   36: 		$this->instance = new foo();
   37: 		$this->instance->method1($this);
   38: 		$this->instance->method1($this);
   39: 	}
   40: 
   41: 	function run2() {
   42: 		print __CLASS__."::".__FUNCTION__."\n";
   43: 		$this->instance = new foo();
   44: 		$this->instance->method2($this);
   45: 		$this->instance->method2($this);
   46: 	}
   47: 
   48: 	function run3() {
   49: 		print __CLASS__."::".__FUNCTION__."\n";
   50: 		$this->instance = new foo();
   51: 		$this->instance->method3($this);
   52: 		$this->instance->method3($this);
   53: 	}
   54: }
   55: 
   56: function ouch(&$bar) {
   57: 	print __FUNCTION__."\n";
   58: 	@$a = $a;
   59: 	$bar->run1();
   60: }
   61: 
   62: function ok1(&$bar) {
   63: 	print __FUNCTION__."\n";
   64: 	$bar->run1();
   65: }
   66: 
   67: function ok2(&$bar) {
   68: 	print __FUNCTION__."\n";
   69: 	@$a = $a; 
   70: 	$bar->run2();
   71: }
   72: 
   73: function ok3(&$bar) {
   74: 	print __FUNCTION__."\n";
   75: 	@$a = $a;
   76: 	$bar->run3();
   77: }
   78: 
   79: $bar = &new bar();
   80: ok1($bar);
   81: $bar->instance->finalize();
   82: print "done!\n";
   83: ok2($bar);
   84: $bar->instance->finalize();
   85: print "done!\n";
   86: ok3($bar);
   87: $bar->instance->finalize();
   88: print "done!\n";
   89: ouch($bar);
   90: $bar->instance->finalize();
   91: print "I'm alive!\n";
   92: ?>
   93: --EXPECTF--
   94: Deprecated: Assigning the return value of new by reference is deprecated in %s on line %d
   95: ok1
   96: bar::run1
   97: foo::method1
   98: 
   99: Notice: Only variable references should be returned by reference in %s on line %d
  100: foo::method1
  101: 
  102: Notice: Only variable references should be returned by reference in %s on line %d
  103: foo::finalize
  104: done!
  105: ok2
  106: bar::run2
  107: foo::method2
  108: foo::method2
  109: foo::finalize
  110: done!
  111: ok3
  112: bar::run3
  113: foo::method3
  114: foo::method3
  115: foo::finalize
  116: done!
  117: ouch
  118: bar::run1
  119: foo::method1
  120: 
  121: Notice: Only variable references should be returned by reference in %s on line %d
  122: foo::method1
  123: 
  124: Notice: Only variable references should be returned by reference in %s on line %d
  125: foo::finalize
  126: I'm alive!

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>