cvs: ZendEngine2(PHP_5_2) / zend_vm_def.h zend_vm_execute.h /tests bug45805.phpt php-src NEWS
"Dmitry Stogov" <[email protected]>
| Newsgroups | gmane.comp.php.cvs.zend |
|---|---|
| Message-ID | <cvsdmitry1218611987@cvsserver> |
dmitry Wed Aug 13 07:19:47 2008 UTC
Added files: (Branch: PHP_5_2)
/ZendEngine2/tests bug45805.phpt
Modified files:
/php-src NEWS
/ZendEngine2 zend_vm_def.h zend_vm_execute.h
Log:
Fixed bug #45805 (Crach on throwing exception from error handler)
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.1197&r2=1.2027.2.547.2.1198&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.1197 php-src/NEWS:1.2027.2.547.2.1198
--- php-src/NEWS:1.2027.2.547.2.1197 Wed Aug 13 01:01:27 2008
+++ php-src/NEWS Wed Aug 13 07:19:39 2008
@@ -19,6 +19,7 @@
- Fixed a crash on invalid method in ReflectionParameter constructor.
(Christian Seiler)
+- Fixed bug #45805 (Crach on throwing exception from error handler). (Dmitry)
- Fixed bug #45765 (ReflectionObject with default parameters of self::xxx cause
an error). (Felipe)
- Fixed bug #45705 (rfc822_parse_adrlist() modifies passed address parameter).
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_vm_def.h?r1=1.59.2.29.2.57&r2=1.59.2.29.2.58&diff_format=u
Index: ZendEngine2/zend_vm_def.h
diff -u ZendEngine2/zend_vm_def.h:1.59.2.29.2.57 ZendEngine2/zend_vm_def.h:1.59.2.29.2.58
--- ZendEngine2/zend_vm_def.h:1.59.2.29.2.57 Thu Jul 24 11:47:12 2008
+++ ZendEngine2/zend_vm_def.h Wed Aug 13 07:19:40 2008
@@ -18,7 +18,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: zend_vm_def.h,v 1.59.2.29.2.57 2008/07/24 11:47:12 dmitry Exp $ */
+/* $Id: zend_vm_def.h,v 1.59.2.29.2.58 2008/08/13 07:19:40 dmitry Exp $ */
/* If you change this file, please regenerate the zend_vm_execute.h and
* zend_vm_opcodes.h files by running:
@@ -1482,6 +1482,10 @@
PZVAL_LOCK(*value_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
zend_error(E_STRICT, "Only variables should be assigned by reference");
+ if (EG(exception)) {
+ FREE_OP2_VAR_PTR();
+ ZEND_VM_NEXT_OPCODE();
+ }
ZEND_VM_DISPATCH_TO_HANDLER(ZEND_ASSIGN);
} else if (OP2_TYPE == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(*value_ptr_ptr);
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_vm_execute.h?r1=1.62.2.30.2.60&r2=1.62.2.30.2.61&diff_format=u
Index: ZendEngine2/zend_vm_execute.h
diff -u ZendEngine2/zend_vm_execute.h:1.62.2.30.2.60 ZendEngine2/zend_vm_execute.h:1.62.2.30.2.61
--- ZendEngine2/zend_vm_execute.h:1.62.2.30.2.60 Thu Jul 24 11:47:12 2008
+++ ZendEngine2/zend_vm_execute.h Wed Aug 13 07:19:40 2008
@@ -12385,6 +12385,10 @@
PZVAL_LOCK(*value_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
zend_error(E_STRICT, "Only variables should be assigned by reference");
+ if (EG(exception)) {
+ if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+ ZEND_VM_NEXT_OPCODE();
+ }
return ZEND_ASSIGN_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
} else if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(*value_ptr_ptr);
@@ -14393,6 +14397,10 @@
PZVAL_LOCK(*value_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
zend_error(E_STRICT, "Only variables should be assigned by reference");
+ if (EG(exception)) {
+
+ ZEND_VM_NEXT_OPCODE();
+ }
return ZEND_ASSIGN_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
} else if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(*value_ptr_ptr);
@@ -24506,6 +24514,10 @@
PZVAL_LOCK(*value_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
zend_error(E_STRICT, "Only variables should be assigned by reference");
+ if (EG(exception)) {
+ if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+ ZEND_VM_NEXT_OPCODE();
+ }
return ZEND_ASSIGN_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
} else if (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(*value_ptr_ptr);
@@ -26504,6 +26516,10 @@
PZVAL_LOCK(*value_ptr_ptr); /* undo the effect of get_zval_ptr_ptr() */
}
zend_error(E_STRICT, "Only variables should be assigned by reference");
+ if (EG(exception)) {
+
+ ZEND_VM_NEXT_OPCODE();
+ }
return ZEND_ASSIGN_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
} else if (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_NEW) {
PZVAL_LOCK(*value_ptr_ptr);
http://cvs.php.net/viewvc.cgi/ZendEngine2/tests/bug45805.phpt?view=markup&rev=1.1
Index: ZendEngine2/tests/bug45805.phpt
+++ ZendEngine2/tests/bug45805.phpt
--
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php