@@ -329,42 +329,51 @@ ZEND_COLD ZEND_METHOD(Exception, __clone)
329329}
330330/* }}} */
331331
332- /* {{{ Exception constructor */
333- ZEND_METHOD (Exception , __construct )
332+ ZEND_API zend_result zend_update_exception_properties (INTERNAL_FUNCTION_PARAMETERS , zend_string * message , zend_long code , zval * previous )
334333{
335- zend_string * message = NULL ;
336- zend_long code = 0 ;
337- zval tmp , * object , * previous = NULL ;
338-
339- object = ZEND_THIS ;
340-
341- if (zend_parse_parameters (ZEND_NUM_ARGS (), "|SlO!" , & message , & code , & previous , zend_ce_throwable ) == FAILURE ) {
342- RETURN_THROWS ();
343- }
334+ zval tmp , * object = ZEND_THIS ;
344335
345336 if (message ) {
346337 ZVAL_STR_COPY (& tmp , message );
347338 zend_update_property_num_checked (NULL , Z_OBJ_P (object ), ZEND_EXCEPTION_MESSAGE_OFF , ZSTR_KNOWN (ZEND_STR_MESSAGE ), & tmp );
348339 if (UNEXPECTED (EG (exception ))) {
349- RETURN_THROWS () ;
340+ return FAILURE ;
350341 }
351342 }
352343
353344 if (code ) {
354345 ZVAL_LONG (& tmp , code );
355346 zend_update_property_num_checked (NULL , Z_OBJ_P (object ), ZEND_EXCEPTION_CODE_OFF , ZSTR_KNOWN (ZEND_STR_CODE ), & tmp );
356347 if (UNEXPECTED (EG (exception ))) {
357- RETURN_THROWS () ;
348+ return FAILURE ;
358349 }
359350 }
360351
361352 if (previous ) {
362353 Z_ADDREF_P (previous );
363354 zend_update_property_num_checked (zend_ce_exception , Z_OBJ_P (object ), ZEND_EXCEPTION_PREVIOUS_OFF , ZSTR_KNOWN (ZEND_STR_PREVIOUS ), previous );
364355 if (UNEXPECTED (EG (exception ))) {
365- RETURN_THROWS () ;
356+ return FAILURE ;
366357 }
367358 }
359+
360+ return SUCCESS ;
361+ }
362+
363+ /* {{{ Exception constructor */
364+ ZEND_METHOD (Exception , __construct )
365+ {
366+ zend_string * message = NULL ;
367+ zend_long code = 0 ;
368+ zval * previous = NULL ;
369+
370+ if (zend_parse_parameters (ZEND_NUM_ARGS (), "|SlO!" , & message , & code , & previous , zend_ce_throwable ) == FAILURE ) {
371+ RETURN_THROWS ();
372+ }
373+
374+ if (zend_update_exception_properties (INTERNAL_FUNCTION_PARAM_PASSTHRU , message , code , previous ) == FAILURE ) {
375+ RETURN_THROWS ();
376+ }
368377}
369378/* }}} */
370379
@@ -401,28 +410,8 @@ ZEND_METHOD(ErrorException, __construct)
401410
402411 object = ZEND_THIS ;
403412
404- if (message ) {
405- ZVAL_STR_COPY (& tmp , message );
406- zend_update_property_num_checked (NULL , Z_OBJ_P (object ), ZEND_EXCEPTION_MESSAGE_OFF , ZSTR_KNOWN (ZEND_STR_MESSAGE ), & tmp );
407- if (UNEXPECTED (EG (exception ))) {
408- RETURN_THROWS ();
409- }
410- }
411-
412- if (code ) {
413- ZVAL_LONG (& tmp , code );
414- zend_update_property_num_checked (NULL , Z_OBJ_P (object ), ZEND_EXCEPTION_CODE_OFF , ZSTR_KNOWN (ZEND_STR_CODE ), & tmp );
415- if (UNEXPECTED (EG (exception ))) {
416- RETURN_THROWS ();
417- }
418- }
419-
420- if (previous ) {
421- Z_ADDREF_P (previous );
422- zend_update_property_num_checked (zend_ce_exception , Z_OBJ_P (object ), ZEND_EXCEPTION_PREVIOUS_OFF , ZSTR_KNOWN (ZEND_STR_PREVIOUS ), previous );
423- if (UNEXPECTED (EG (exception ))) {
424- RETURN_THROWS ();
425- }
413+ if (zend_update_exception_properties (INTERNAL_FUNCTION_PARAM_PASSTHRU , message , code , previous ) == FAILURE ) {
414+ RETURN_THROWS ();
426415 }
427416
428417 ZVAL_LONG (& tmp , severity );
0 commit comments