@@ -379,42 +379,36 @@ ZEND_FUNCTION(error_reporting)
379
379
old_error_reporting = EG (error_reporting );
380
380
381
381
if (!err_is_null && err != old_error_reporting ) {
382
- zend_string * new_val = zend_long_to_str (err );
383
- if (UNEXPECTED (!new_val )) {
384
- RETURN_THROWS ();
385
- }
382
+ zend_ini_entry * p = EG (error_reporting_ini_entry );
386
383
387
- do {
388
- zend_ini_entry * p = EG (error_reporting_ini_entry );
384
+ if (!p ) {
385
+ zval * zv = zend_hash_find_ex (EG (ini_directives ), ZSTR_KNOWN (ZEND_STR_ERROR_REPORTING ), 1 );
386
+ if (!zv ) {
387
+ /* Ini setting does not exist -- can this happen? */
388
+ RETURN_LONG (old_error_reporting );
389
+ }
389
390
390
- if (!p ) {
391
- zval * zv = zend_hash_find_ex (EG (ini_directives ), ZSTR_KNOWN (ZEND_STR_ERROR_REPORTING ), 1 );
392
- if (zv ) {
393
- p = EG (error_reporting_ini_entry ) = (zend_ini_entry * )Z_PTR_P (zv );
394
- } else {
395
- break ;
396
- }
391
+ p = EG (error_reporting_ini_entry ) = (zend_ini_entry * )Z_PTR_P (zv );
392
+ }
393
+ if (!p -> modified ) {
394
+ if (!EG (modified_ini_directives )) {
395
+ ALLOC_HASHTABLE (EG (modified_ini_directives ));
396
+ zend_hash_init (EG (modified_ini_directives ), 8 , NULL , NULL , 0 );
397
397
}
398
- if (!p -> modified ) {
399
- if (!EG (modified_ini_directives )) {
400
- ALLOC_HASHTABLE (EG (modified_ini_directives ));
401
- zend_hash_init (EG (modified_ini_directives ), 8 , NULL , NULL , 0 );
402
- }
403
- if (EXPECTED (zend_hash_add_ptr (EG (modified_ini_directives ), ZSTR_KNOWN (ZEND_STR_ERROR_REPORTING ), p ) != NULL )) {
404
- p -> orig_value = p -> value ;
405
- p -> orig_modifiable = p -> modifiable ;
406
- p -> modified = 1 ;
407
- }
408
- } else if (p -> orig_value != p -> value ) {
409
- zend_string_release_ex (p -> value , 0 );
398
+ if (EXPECTED (zend_hash_add_ptr (EG (modified_ini_directives ), ZSTR_KNOWN (ZEND_STR_ERROR_REPORTING ), p ) != NULL )) {
399
+ p -> orig_value = p -> value ;
400
+ p -> orig_modifiable = p -> modifiable ;
401
+ p -> modified = 1 ;
410
402
}
403
+ } else if (p -> orig_value != p -> value ) {
404
+ zend_string_release_ex (p -> value , 0 );
405
+ }
411
406
412
- p -> value = new_val ;
413
- EG (error_reporting ) = err ;
414
- } while (0 );
407
+ p -> value = zend_long_to_str (err );
408
+ EG (error_reporting ) = err ;
415
409
}
416
410
417
- RETVAL_LONG (old_error_reporting );
411
+ RETURN_LONG (old_error_reporting );
418
412
}
419
413
/* }}} */
420
414
0 commit comments