diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lang/bug21961.phpt | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/tests/lang/bug21961.phpt b/tests/lang/bug21961.phpt new file mode 100644 index 0000000000..eddb8a4a24 --- /dev/null +++ b/tests/lang/bug21961.phpt @@ -0,0 +1,56 @@ +--TEST-- +Bug #21961 (get_parent_class() segfault) +--FILE-- +<?php + +class man +{ + var $name, $bars; + function man() + { + $this->name = 'Mr. X'; + $this->bars = array(); + } + + function getdrunk($where) + { + $this->bars[] = new bar($where); + } + + function getName() + { + return $this->name; + } +} + +class bar extends man +{ + var $name; + + function bar($w) + { + $this->name = $w; + } + + function getName() + { + return $this->name; + } + + function whosdrunk() + { + $who = get_parent_class($this); + if($who == NULL) + { + return 'nobody'; + } + return eval($who.'::getName()'); + } +} + +$x = new man; +$x->getdrunk('The old Tavern'); +var_dump($x->bars[0]->whosdrunk()); +?> +--EXPECT-- +string(14) "The old Tavern" |