Commit: 7197f0ffccea7f195bc28571e30c389eadda874b Author: Xinchen Hui <larue...@php.net> Sat, 9 Mar 2013 23:08:14 +0800 Parents: f52b2e6a6572018eb61ad830206ed172b033232a Branches: PHP-5.4
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=7197f0ffccea7f195bc28571e30c389eadda874b Log: Fixed confused exception message while user threw exception Changed paths: A Zend/tests/bug64354.phpt M Zend/zend_interfaces.c Diff: diff --git a/Zend/tests/bug64354.phpt b/Zend/tests/bug64354.phpt new file mode 100644 index 0000000..03a4b80 --- /dev/null +++ b/Zend/tests/bug64354.phpt @@ -0,0 +1,24 @@ +--TEST-- +Bug #64354 (Unserialize array of objects whose class can't be autoloaded fail) +--FILE-- +<?php +class B implements Serializable { + public function serialize() { + throw new Exception("serialize"); + return NULL; + } + + public function unserialize($data) { + } +} + +$data = array(new B); + +try { + serialize($data); +} catch (Exception $e) { + var_dump($e->getMessage()); +} +?> +--EXPECTF-- +string(9) "serialize" diff --git a/Zend/zend_interfaces.c b/Zend/zend_interfaces.c index 384b66d..e2e81ed 100644 --- a/Zend/zend_interfaces.c +++ b/Zend/zend_interfaces.c @@ -452,7 +452,7 @@ ZEND_API int zend_user_serialize(zval *object, unsigned char **buffer, zend_uint zval_ptr_dtor(&retval); } - if (result == FAILURE) { + if (result == FAILURE && !EG(exception)) { zend_throw_exception_ex(NULL, 0 TSRMLS_CC, "%s::serialize() must return a string or NULL", ce->name); } return result; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php