@@ -329,42 +329,51 @@ ZEND_COLD ZEND_METHOD(Exception, __clone)
329
329
}
330
330
/* }}} */
331
331
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 )
334
333
{
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 ;
344
335
345
336
if (message ) {
346
337
ZVAL_STR_COPY (& tmp , message );
347
338
zend_update_property_num_checked (NULL , Z_OBJ_P (object ), ZEND_EXCEPTION_MESSAGE_OFF , ZSTR_KNOWN (ZEND_STR_MESSAGE ), & tmp );
348
339
if (UNEXPECTED (EG (exception ))) {
349
- RETURN_THROWS () ;
340
+ return FAILURE ;
350
341
}
351
342
}
352
343
353
344
if (code ) {
354
345
ZVAL_LONG (& tmp , code );
355
346
zend_update_property_num_checked (NULL , Z_OBJ_P (object ), ZEND_EXCEPTION_CODE_OFF , ZSTR_KNOWN (ZEND_STR_CODE ), & tmp );
356
347
if (UNEXPECTED (EG (exception ))) {
357
- RETURN_THROWS () ;
348
+ return FAILURE ;
358
349
}
359
350
}
360
351
361
352
if (previous ) {
362
353
Z_ADDREF_P (previous );
363
354
zend_update_property_num_checked (zend_ce_exception , Z_OBJ_P (object ), ZEND_EXCEPTION_PREVIOUS_OFF , ZSTR_KNOWN (ZEND_STR_PREVIOUS ), previous );
364
355
if (UNEXPECTED (EG (exception ))) {
365
- RETURN_THROWS () ;
356
+ return FAILURE ;
366
357
}
367
358
}
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
+ }
368
377
}
369
378
/* }}} */
370
379
@@ -401,28 +410,8 @@ ZEND_METHOD(ErrorException, __construct)
401
410
402
411
object = ZEND_THIS ;
403
412
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 ();
426
415
}
427
416
428
417
ZVAL_LONG (& tmp , severity );
0 commit comments