--- /dev/null
+--TEST--
+Bug #30707 (Segmentation fault on exception in method)
+--FILE--
+<?php
+class C {
+ function byePHP($plop) {
+ echo "ok\n";
+ }
+
+ function plip() {
+ try {
+ $this->plap($this->plop());
+ } catch(Exception $e) {
+ }
+ }
+
+ function plap($a) {
+ }
+
+ function plop() {
+ throw new Exception;
+ }
+}
+
+$x = new C;
+$x->byePHP($x->plip());
+?>
+--EXPECT--
+ok
}
}
+ while (EX(fbc)) {
+ if (EX(object)) {
+ zval_ptr_dtor(&EX(object));
+ }
+ zend_ptr_stack_n_pop(&EG(arg_types_stack), 3, &EX(calling_scope), &EX(object), &EX(fbc));
+ }
+
if (encapsulating_block == -1) {
ZEND_VM_RETURN_FROM_EXECUTE_LOOP();
} else {
}
}
+ while (EX(fbc)) {
+ if (EX(object)) {
+ zval_ptr_dtor(&EX(object));
+ }
+ zend_ptr_stack_n_pop(&EG(arg_types_stack), 3, &EX(calling_scope), &EX(object), &EX(fbc));
+ }
+
if (encapsulating_block == -1) {
ZEND_VM_RETURN_FROM_EXECUTE_LOOP();
} else {
}
}
+ while (EX(fbc)) {
+ if (EX(object)) {
+ zval_ptr_dtor(&EX(object));
+ }
+ zend_ptr_stack_n_pop(&EG(arg_types_stack), 3, &EX(calling_scope), &EX(object), &EX(fbc));
+ }
+
if (encapsulating_block == -1) {
ZEND_VM_RETURN_FROM_EXECUTE_LOOP();
} else {