@@ -320,15 +320,24 @@ ZEND_METHOD(Exception, __construct)
320320 if (message ) {
321321 ZVAL_STR (& tmp , message );
322322 zend_update_property_ex (base_ce , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_MESSAGE ), & tmp );
323+ if (UNEXPECTED (EG (exception ))) {
324+ RETURN_THROWS ();
325+ }
323326 }
324327
325328 if (code ) {
326329 ZVAL_LONG (& tmp , code );
327330 zend_update_property_ex (base_ce , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_CODE ), & tmp );
331+ if (UNEXPECTED (EG (exception ))) {
332+ RETURN_THROWS ();
333+ }
328334 }
329335
330336 if (previous ) {
331337 zend_update_property_ex (base_ce , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_PREVIOUS ), previous );
338+ if (UNEXPECTED (EG (exception ))) {
339+ RETURN_THROWS ();
340+ }
332341 }
333342}
334343/* }}} */
@@ -370,32 +379,53 @@ ZEND_METHOD(ErrorException, __construct)
370379 ZVAL_STR_COPY (& tmp , message );
371380 zend_update_property_ex (zend_ce_exception , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_MESSAGE ), & tmp );
372381 zval_ptr_dtor (& tmp );
382+ if (UNEXPECTED (EG (exception ))) {
383+ RETURN_THROWS ();
384+ }
373385 }
374386
375387 if (code ) {
376388 ZVAL_LONG (& tmp , code );
377389 zend_update_property_ex (zend_ce_exception , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_CODE ), & tmp );
390+ if (UNEXPECTED (EG (exception ))) {
391+ RETURN_THROWS ();
392+ }
378393 }
379394
380395 if (previous ) {
381396 zend_update_property_ex (zend_ce_exception , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_PREVIOUS ), previous );
397+ if (UNEXPECTED (EG (exception ))) {
398+ RETURN_THROWS ();
399+ }
382400 }
383401
384402 ZVAL_LONG (& tmp , severity );
385403 zend_update_property_ex (zend_ce_exception , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_SEVERITY ), & tmp );
404+ if (UNEXPECTED (EG (exception ))) {
405+ RETURN_THROWS ();
406+ }
386407
387408 if (filename ) {
388409 ZVAL_STR_COPY (& tmp , filename );
389410 zend_update_property_ex (zend_ce_exception , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_FILE ), & tmp );
390411 zval_ptr_dtor (& tmp );
412+ if (UNEXPECTED (EG (exception ))) {
413+ RETURN_THROWS ();
414+ }
391415 }
392416
393417 if (!lineno_is_null ) {
394418 ZVAL_LONG (& tmp , lineno );
395419 zend_update_property_ex (zend_ce_exception , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_LINE ), & tmp );
420+ if (UNEXPECTED (EG (exception ))) {
421+ RETURN_THROWS ();
422+ }
396423 } else if (filename ) {
397424 ZVAL_LONG (& tmp , 0 );
398425 zend_update_property_ex (zend_ce_exception , Z_OBJ_P (object ), ZSTR_KNOWN (ZEND_STR_LINE ), & tmp );
426+ if (UNEXPECTED (EG (exception ))) {
427+ RETURN_THROWS ();
428+ }
399429 }
400430}
401431/* }}} */
0 commit comments