Skip to content

Commit a9a7858

Browse files
committed
Fix GH-20106: locale methods catering to stricter C++ rules.
1 parent a07d257 commit a9a7858

File tree

1 file changed

+18
-17
lines changed

1 file changed

+18
-17
lines changed

ext/intl/locale/locale_methods.cpp

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ U_CFUNC PHP_NAMED_FUNCTION(zif_locale_set_default)
341341
* common code shared by get_primary_language,get_script or get_region or get_variant
342342
* result = 0 if error, 1 if successful , -1 if no value
343343
*/
344-
static zend_string* get_icu_value_internal( const char* loc_name , char* tag_name, int* result , int fromParseLocale)
344+
static zend_string* get_icu_value_internal( const char* loc_name , const char* tag_name, int* result , int fromParseLocale)
345345
{
346346
zend_string* tag_value = NULL;
347347
int32_t tag_value_len = 512;
@@ -466,7 +466,7 @@ static zend_string* get_icu_value_internal( const char* loc_name , char* tag_nam
466466
* Gets the value from ICU , called when PHP userspace function is called
467467
* common code shared by get_primary_language,get_script or get_region or get_variant
468468
*/
469-
static void get_icu_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAMETERS)
469+
static void get_icu_value_src_php( const char* tag_name, INTERNAL_FUNCTION_PARAMETERS)
470470
{
471471

472472
char* loc_name = NULL;
@@ -544,7 +544,7 @@ U_CFUNC PHP_FUNCTION(locale_get_primary_language )
544544
/* {{{
545545
* common code shared by display_xyz functions to get the value from ICU
546546
}}} */
547-
static void get_icu_disp_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAMETERS)
547+
static void get_icu_disp_value_src_php( const char* tag_name, INTERNAL_FUNCTION_PARAMETERS)
548548
{
549549
char* loc_name = NULL;
550550
size_t loc_name_len = 0;
@@ -801,7 +801,7 @@ U_CFUNC PHP_FUNCTION(locale_canonicalize)
801801
* returns 1 if successful , -1 if not found ,
802802
* 0 if array element is not a string , -2 if buffer-overflow
803803
*/
804-
static int append_key_value(smart_str* loc_name, HashTable* hash_arr, char* key_name)
804+
static int append_key_value(smart_str* loc_name, HashTable* hash_arr, const char* key_name)
805805
{
806806
zval *ele_value;
807807

@@ -826,7 +826,7 @@ static int append_key_value(smart_str* loc_name, HashTable* hash_arr, char* key_
826826
/* {{{ append_prefix , appends the prefix needed
827827
* e.g. private adds 'x'
828828
*/
829-
static void add_prefix(smart_str* loc_name, char* key_name)
829+
static void add_prefix(smart_str* loc_name, const char* key_name)
830830
{
831831
if( strncmp(key_name , LOC_PRIVATE_TAG , 7) == 0 ){
832832
smart_str_appendl(loc_name, SEPARATOR , sizeof(SEPARATOR)-1);
@@ -842,7 +842,7 @@ static void add_prefix(smart_str* loc_name, char* key_name)
842842
* returns 1 if successful , -1 if not found ,
843843
* 0 if array element is not a string , -2 if buffer-overflow
844844
*/
845-
static int append_multiple_key_values(smart_str* loc_name, HashTable* hash_arr, char* key_name)
845+
static int append_multiple_key_values(smart_str* loc_name, HashTable* hash_arr, const char* key_name)
846846
{
847847
zval *ele_value;
848848
int isFirstSubtag = 0;
@@ -1053,7 +1053,7 @@ static zend_string* get_private_subtags(const char* loc_name)
10531053
/* }}} */
10541054

10551055
/* {{{ code used by locale_parse */
1056-
static int add_array_entry(const char* loc_name, zval* hash_arr, char* key_name)
1056+
static int add_array_entry(const char* loc_name, zval* hash_arr, const char* key_name)
10571057
{
10581058
zend_string* key_value = NULL;
10591059
char* cur_key_name = NULL;
@@ -1141,11 +1141,12 @@ U_CFUNC PHP_FUNCTION(locale_parse)
11411141
}
11421142
else{
11431143
/* Not grandfathered */
1144-
add_array_entry( loc_name , return_value , LOC_LANG_TAG);
1145-
add_array_entry( loc_name , return_value , LOC_SCRIPT_TAG);
1146-
add_array_entry( loc_name , return_value , LOC_REGION_TAG);
1147-
add_array_entry( loc_name , return_value , LOC_VARIANT_TAG);
1148-
add_array_entry( loc_name , return_value , LOC_PRIVATE_TAG);
1144+
const char *c_loc_name = const_cast<char *>(loc_name);
1145+
add_array_entry( c_loc_name , return_value , const_cast<char *>(LOC_LANG_TAG));
1146+
add_array_entry( c_loc_name , return_value , const_cast<char *>(LOC_SCRIPT_TAG));
1147+
add_array_entry( c_loc_name , return_value , const_cast<char *>(LOC_REGION_TAG));
1148+
add_array_entry( c_loc_name , return_value , const_cast<char *>(LOC_VARIANT_TAG));
1149+
add_array_entry( c_loc_name , return_value , const_cast<char *>(LOC_PRIVATE_TAG));
11491150
}
11501151
}
11511152
/* }}} */
@@ -1182,7 +1183,7 @@ U_CFUNC PHP_FUNCTION(locale_get_all_variants)
11821183
}
11831184
else {
11841185
/* Call ICU variant */
1185-
variant = get_icu_value_internal( loc_name , LOC_VARIANT_TAG , &result ,0);
1186+
variant = get_icu_value_internal( const_cast<char *>(loc_name) , LOC_VARIANT_TAG , &result ,0);
11861187
if( result > 0 && variant){
11871188
/* Tokenize on the "_" or "-" */
11881189
token = php_strtok_r( variant->val , DELIMITER , &saved_ptr);
@@ -1278,14 +1279,14 @@ U_CFUNC PHP_FUNCTION(locale_filter_matches)
12781279

12791280
if( boolCanonical ){
12801281
/* canonicalize loc_range */
1281-
can_loc_range=get_icu_value_internal( loc_range , LOC_CANONICALIZE_TAG , &result , 0);
1282+
can_loc_range=get_icu_value_internal( const_cast<char *>(loc_range) , LOC_CANONICALIZE_TAG , &result , 0);
12821283
if( result <=0) {
12831284
intl_error_set(NULL, status, "unable to canonicalize loc_range");
12841285
RETURN_FALSE;
12851286
}
12861287

12871288
/* canonicalize lang_tag */
1288-
can_lang_tag = get_icu_value_internal( lang_tag , LOC_CANONICALIZE_TAG , &result , 0);
1289+
can_lang_tag = get_icu_value_internal( const_cast<char *>(lang_tag) , LOC_CANONICALIZE_TAG , &result , 0);
12891290
if( result <=0) {
12901291
intl_error_set(NULL, status, "unable to canonicalize lang_tag");
12911292
RETURN_FALSE;
@@ -1447,7 +1448,7 @@ static zend_string* lookup_loc_range(const char* loc_range, HashTable* hash_arr,
14471448
/* Canonicalize array elements */
14481449
if(canonicalize) {
14491450
for(i=0; i<cur_arr_len; i++) {
1450-
lang_tag = get_icu_value_internal(cur_arr[i*2], LOC_CANONICALIZE_TAG, &result, 0);
1451+
lang_tag = get_icu_value_internal(const_cast<char *>(cur_arr[i*2]), LOC_CANONICALIZE_TAG, &result, 0);
14511452
if(result != 1 || lang_tag == NULL || !lang_tag->val[0]) {
14521453
if(lang_tag) {
14531454
zend_string_release_ex(lang_tag, 0);
@@ -1468,7 +1469,7 @@ static zend_string* lookup_loc_range(const char* loc_range, HashTable* hash_arr,
14681469

14691470
if(canonicalize) {
14701471
/* Canonicalize the loc_range */
1471-
can_loc_range = get_icu_value_internal(loc_range, LOC_CANONICALIZE_TAG, &result , 0);
1472+
can_loc_range = get_icu_value_internal(const_cast<char *>(loc_range), LOC_CANONICALIZE_TAG, &result , 0);
14721473
if( result != 1 || can_loc_range == NULL || !can_loc_range->val[0]) {
14731474
/* Error */
14741475
intl_error_set(NULL, U_ILLEGAL_ARGUMENT_ERROR, "unable to canonicalize loc_range");

0 commit comments

Comments
 (0)