summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/lang/bug21961.phpt56
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"