- Enforece rule of disallowing throw in __toString()

This commit is contained in:
Marcus Boerger 2006-05-10 21:12:48 +00:00
parent cbb11e018a
commit f16bdce284

View file

@ -1034,9 +1034,11 @@ ZEND_API int zend_std_cast_object_tostring(zval *readobj, zval *writeobj, int ty
case IS_STRING:
ce = Z_OBJCE_P(readobj);
if (ce->__tostring &&
zend_call_method_with_0_params(&readobj, ce, &ce->__tostring, "__tostring", &retval)) {
(zend_call_method_with_0_params(&readobj, ce, &ce->__tostring, "__tostring", &retval) || EG(exception))) {
if (EG(exception)) {
if (retval) {
zval_ptr_dtor(&retval);
}
zend_error(E_ERROR, "Method %s::__toString() must not throw an exception", ce->name);
return FAILURE;
}