@@ -334,7 +334,7 @@ static const mbfl_encoding *php_mb_get_encoding(zend_string *encoding_name) {
334
334
335
335
encoding = mbfl_name2encoding (ZSTR_VAL (encoding_name ));
336
336
if (!encoding ) {
337
- php_error_docref ( NULL , E_WARNING , "Unknown encoding \"%s\"" , ZSTR_VAL (encoding_name ));
337
+ zend_value_error ( "Unknown encoding \"%s\"" , ZSTR_VAL (encoding_name ));
338
338
return NULL ;
339
339
}
340
340
@@ -1400,8 +1400,9 @@ PHP_FUNCTION(mb_language)
1400
1400
} else {
1401
1401
zend_string * ini_name = zend_string_init ("mbstring.language" , sizeof ("mbstring.language" ) - 1 , 0 );
1402
1402
if (FAILURE == zend_alter_ini_entry (ini_name , name , PHP_INI_USER , PHP_INI_STAGE_RUNTIME )) {
1403
- php_error_docref (NULL , E_WARNING , "Unknown language \"%s\"" , ZSTR_VAL (name ));
1404
- RETVAL_FALSE ;
1403
+ zend_value_error ("Unknown language \"%s\"" , ZSTR_VAL (name ));
1404
+ zend_string_release_ex (ini_name , 0 );
1405
+ RETURN_THROWS ();
1405
1406
} else {
1406
1407
RETVAL_TRUE ;
1407
1408
}
@@ -1431,8 +1432,8 @@ PHP_FUNCTION(mb_internal_encoding)
1431
1432
} else {
1432
1433
encoding = mbfl_name2encoding (name );
1433
1434
if (!encoding ) {
1434
- php_error_docref ( NULL , E_WARNING , "Unknown encoding \"%s\"" , name );
1435
- RETURN_FALSE ;
1435
+ zend_value_error ( "Unknown encoding \"%s\"" , name );
1436
+ RETURN_THROWS () ;
1436
1437
} else {
1437
1438
MBSTRG (current_internal_encoding ) = encoding ;
1438
1439
MBSTRG (internal_encoding_set ) = 1 ;
@@ -1556,8 +1557,8 @@ PHP_FUNCTION(mb_http_output)
1556
1557
} else {
1557
1558
encoding = mbfl_name2encoding (name );
1558
1559
if (!encoding ) {
1559
- php_error_docref ( NULL , E_WARNING , "Unknown encoding \"%s\"" , name );
1560
- RETURN_FALSE ;
1560
+ zend_value_error ( "Unknown encoding \"%s\"" , name );
1561
+ RETURN_THROWS () ;
1561
1562
} else {
1562
1563
MBSTRG (http_output_set ) = 1 ;
1563
1564
MBSTRG (current_http_output_encoding ) = encoding ;
@@ -1727,6 +1728,20 @@ PHP_FUNCTION(mb_preferred_mime_name)
1727
1728
}
1728
1729
}
1729
1730
}
1731
+
1732
+ no_encoding = mbfl_name2no_encoding (name );
1733
+ if (no_encoding == mbfl_no_encoding_invalid ) {
1734
+ zend_value_error ("Unknown encoding \"%s\"" , name );
1735
+ RETURN_THROWS ();
1736
+ }
1737
+
1738
+ const char * preferred_name = mbfl_no2preferred_mime_name (no_encoding );
1739
+ if (preferred_name == NULL || * preferred_name == '\0' ) {
1740
+ zend_value_error ("No MIME preferred name corresponding to \"%s\"" , name );
1741
+ RETURN_THROWS ();
1742
+ }
1743
+
1744
+ RETVAL_STRING ((char * )preferred_name );
1730
1745
}
1731
1746
/* }}} */
1732
1747
@@ -1928,8 +1943,8 @@ PHP_FUNCTION(mb_str_split)
1928
1943
ZEND_PARSE_PARAMETERS_END ();
1929
1944
1930
1945
if (split_length <= 0 ) {
1931
- php_error_docref ( NULL , E_WARNING , "The length of each segment must be greater than zero" );
1932
- RETURN_FALSE ;
1946
+ zend_value_error ( "The length of each segment must be greater than zero" );
1947
+ RETURN_THROWS () ;
1933
1948
}
1934
1949
1935
1950
/* fill mbfl_string structure */
@@ -2411,8 +2426,8 @@ PHP_FUNCTION(mb_substr_count)
2411
2426
}
2412
2427
2413
2428
if (needle .len == 0 ) {
2414
- php_error_docref ( NULL , E_WARNING , "Empty substring" );
2415
- RETURN_FALSE ;
2429
+ zend_value_error ( "Empty substring" );
2430
+ RETURN_THROWS () ;
2416
2431
}
2417
2432
2418
2433
n = mbfl_substr_count (& haystack , & needle );
@@ -2609,17 +2624,17 @@ PHP_FUNCTION(mb_strimwidth)
2609
2624
}
2610
2625
2611
2626
if (from < 0 || (size_t )from > str_len ) {
2612
- php_error_docref ( NULL , E_WARNING , "Start position is out of range" );
2613
- RETURN_FALSE ;
2627
+ zend_value_error ( "Start position is out of range" );
2628
+ RETURN_THROWS () ;
2614
2629
}
2615
2630
2616
2631
if (width < 0 ) {
2617
2632
width = swidth + width - from ;
2618
2633
}
2619
2634
2620
2635
if (width < 0 ) {
2621
- php_error_docref ( NULL , E_WARNING , "Width is out of range" );
2622
- RETURN_FALSE ;
2636
+ zend_value_error ( "Width is out of range" );
2637
+ RETURN_THROWS () ;
2623
2638
}
2624
2639
2625
2640
if (trimmarker ) {
@@ -2712,7 +2727,7 @@ MBSTRING_API char *php_mb_convert_encoding(const char *input, size_t length, con
2712
2727
if (_to_encoding && strlen (_to_encoding )) {
2713
2728
to_encoding = mbfl_name2encoding (_to_encoding );
2714
2729
if (!to_encoding ) {
2715
- php_error_docref ( NULL , E_WARNING , "Unknown encoding \"%s\"" , _to_encoding );
2730
+ zend_value_error ( "Unknown encoding \"%s\"" , _to_encoding );
2716
2731
return NULL ;
2717
2732
}
2718
2733
} else {
@@ -2805,8 +2820,8 @@ MBSTRING_API HashTable *php_mb_convert_encoding_recursive(HashTable *input, cons
2805
2820
if (key ) {
2806
2821
zend_string_release (key );
2807
2822
}
2808
- php_error_docref ( NULL , E_WARNING , "Object is not supported" );
2809
- continue ;
2823
+ zend_value_error ( "Object is not supported" );
2824
+ return NULL ;
2810
2825
}
2811
2826
if (key ) {
2812
2827
zend_hash_add (output , key , & entry_tmp );
@@ -2944,8 +2959,8 @@ PHP_FUNCTION(mb_convert_case)
2944
2959
}
2945
2960
2946
2961
if (case_mode < 0 || case_mode > PHP_UNICODE_CASE_MODE_MAX ) {
2947
- php_error_docref ( NULL , E_WARNING , "Invalid case mode" );
2948
- return ;
2962
+ zend_value_error ( "Invalid case mode" );
2963
+ RETURN_THROWS () ;
2949
2964
}
2950
2965
2951
2966
newstr = mbstring_convert_case (case_mode , str , str_len , & ret_len , enc );
@@ -3072,7 +3087,8 @@ PHP_FUNCTION(mb_detect_encoding)
3072
3087
break ;
3073
3088
}
3074
3089
if (size == 0 ) {
3075
- php_error_docref (NULL , E_WARNING , "Illegal argument" );
3090
+ zend_value_error ("Illegal argument" );
3091
+ RETURN_THROWS ();
3076
3092
}
3077
3093
}
3078
3094
@@ -3140,8 +3156,8 @@ PHP_FUNCTION(mb_encoding_aliases)
3140
3156
3141
3157
encoding = mbfl_name2encoding (name );
3142
3158
if (!encoding ) {
3143
- php_error_docref ( NULL , E_WARNING , "Unknown encoding \"%s\"" , name );
3144
- RETURN_FALSE ;
3159
+ zend_value_error ( "Unknown encoding \"%s\"" , name );
3160
+ RETURN_THROWS () ;
3145
3161
}
3146
3162
3147
3163
array_init (return_value );
@@ -3181,8 +3197,8 @@ PHP_FUNCTION(mb_encode_mimeheader)
3181
3197
if (charset_name != NULL ) {
3182
3198
charset = mbfl_name2encoding (charset_name );
3183
3199
if (!charset ) {
3184
- php_error_docref ( NULL , E_WARNING , "Unknown encoding \"%s\"" , charset_name );
3185
- RETURN_FALSE ;
3200
+ zend_value_error ( "Unknown encoding \"%s\"" , charset_name );
3201
+ RETURN_THROWS () ;
3186
3202
}
3187
3203
} else {
3188
3204
const mbfl_language * lang = mbfl_no2language (MBSTRG (language ));
@@ -3451,8 +3467,8 @@ PHP_FUNCTION(mb_convert_variables)
3451
3467
/* new encoding */
3452
3468
to_encoding = mbfl_name2encoding (to_enc );
3453
3469
if (!to_encoding ) {
3454
- php_error_docref ( NULL , E_WARNING , "Unknown encoding \"%s\"" , to_enc );
3455
- RETURN_FALSE ;
3470
+ zend_value_error ( "Unknown encoding \"%s\"" , to_enc );
3471
+ RETURN_THROWS () ;
3456
3472
}
3457
3473
3458
3474
/* initialize string */
@@ -3587,8 +3603,8 @@ php_mb_numericentity_exec(INTERNAL_FUNCTION_PARAMETERS, int type)
3587
3603
if (encoding && encoding_len > 0 ) {
3588
3604
string .encoding = mbfl_name2encoding (encoding );
3589
3605
if (!string .encoding ) {
3590
- php_error_docref ( NULL , E_WARNING , "Unknown encoding \"%s\"" , encoding );
3591
- RETURN_FALSE ;
3606
+ zend_value_error ( "Unknown encoding \"%s\"" , encoding );
3607
+ RETURN_THROWS () ;
3592
3608
}
3593
3609
}
3594
3610
@@ -3896,8 +3912,8 @@ PHP_FUNCTION(mb_send_mail)
3896
3912
str_headers = php_mail_build_headers (Z_ARRVAL_P (headers ));
3897
3913
break ;
3898
3914
default :
3899
- php_error_docref ( NULL , E_WARNING , "headers parameter must be string or array" );
3900
- RETURN_FALSE ;
3915
+ zend_type_error ( "headers parameter must be string or array" );
3916
+ return ;
3901
3917
}
3902
3918
}
3903
3919
if (extra_cmd ) {
@@ -4313,7 +4329,7 @@ MBSTRING_API int php_mb_check_encoding(const char *input, size_t length, const c
4313
4329
if (enc != NULL ) {
4314
4330
encoding = mbfl_name2encoding (enc );
4315
4331
if (!encoding || encoding == & mbfl_encoding_pass ) {
4316
- php_error_docref ( NULL , E_WARNING , "Invalid encoding \"%s\"" , enc );
4332
+ zend_value_error ( "Invalid encoding \"%s\"" , enc );
4317
4333
return 0 ;
4318
4334
}
4319
4335
}
@@ -4347,7 +4363,7 @@ MBSTRING_API int php_mb_check_encoding_recursive(HashTable *vars, const zend_str
4347
4363
if (enc != NULL ) {
4348
4364
encoding = mbfl_name2encoding (ZSTR_VAL (enc ));
4349
4365
if (!encoding || encoding == & mbfl_encoding_pass ) {
4350
- php_error_docref ( NULL , E_WARNING , "Invalid encoding \"%s\"" , ZSTR_VAL (enc ));
4366
+ zend_value_error ( "Invalid encoding \"%s\"" , ZSTR_VAL (enc ));
4351
4367
return 0 ;
4352
4368
}
4353
4369
}
@@ -4451,12 +4467,12 @@ static inline zend_long php_mb_ord(const char *str, size_t str_len, zend_string
4451
4467
4452
4468
no_enc = enc -> no_encoding ;
4453
4469
if (php_mb_is_unsupported_no_encoding (no_enc )) {
4454
- php_error_docref ( NULL , E_WARNING , "Unsupported encoding \"%s\"" , ZSTR_VAL (enc_name ));
4470
+ zend_value_error ( "Unsupported encoding \"%s\"" , ZSTR_VAL (enc_name ));
4455
4471
return -1 ;
4456
4472
}
4457
4473
4458
4474
if (str_len == 0 ) {
4459
- php_error_docref ( NULL , E_WARNING , "Empty string" );
4475
+ zend_value_error ( "Empty string" );
4460
4476
return -1 ;
4461
4477
}
4462
4478
@@ -4531,7 +4547,7 @@ static inline zend_string *php_mb_chr(zend_long cp, zend_string *enc_name)
4531
4547
4532
4548
no_enc = enc -> no_encoding ;
4533
4549
if (php_mb_is_unsupported_no_encoding (no_enc )) {
4534
- php_error_docref ( NULL , E_WARNING , "Unsupported encoding \"%s\"" , ZSTR_VAL (enc_name ));
4550
+ zend_value_error ( "Unsupported encoding \"%s\"" , ZSTR_VAL (enc_name ));
4535
4551
return NULL ;
4536
4552
}
4537
4553
0 commit comments