use more suitable types here, too

and simplify the loop
This commit is contained in:
Anatol Belski 2016-07-25 14:45:10 +02:00
parent 198c2ec5f0
commit 2334d8335b

View file

@ -219,7 +219,7 @@ PHP_NAMED_FUNCTION(zif_locale_get_default)
/* {{{ proto static string Locale::setDefault( string $locale ) /* {{{ proto static string Locale::setDefault( string $locale )
Set default locale */ Set default locale */
/* }}} */ /* }}} */
/* {{{ proto static string locale_set_default( string $locale ) /* {{{ proto sta tic string locale_set_default( string $locale )
Set default locale */ Set default locale */
PHP_NAMED_FUNCTION(zif_locale_set_default) PHP_NAMED_FUNCTION(zif_locale_set_default)
{ {
@ -258,15 +258,15 @@ PHP_NAMED_FUNCTION(zif_locale_set_default)
*/ */
static zend_string* get_icu_value_internal( const char* loc_name , char* tag_name, int* result , int fromParseLocale) static zend_string* get_icu_value_internal( const char* loc_name , char* tag_name, int* result , int fromParseLocale)
{ {
zend_string* tag_value = NULL; zend_string* tag_value = NULL;
int32_t tag_value_len = 512; int32_t tag_value_len = 512;
int singletonPos = 0; zend_off_t singletonPos = 0;
char* mod_loc_name = NULL; char* mod_loc_name = NULL;
int grOffset = 0; zend_off_t grOffset = 0;
int32_t buflen = 512; int32_t buflen = 512;
UErrorCode status = U_ZERO_ERROR; UErrorCode status = U_ZERO_ERROR;
if( strcmp(tag_name, LOC_CANONICALIZE_TAG) != 0 ){ if( strcmp(tag_name, LOC_CANONICALIZE_TAG) != 0 ){
@ -435,10 +435,10 @@ static void get_icu_value_src_php( char* tag_name, INTERNAL_FUNCTION_PARAMETERS)
} }
/* }}} */ /* }}} */
/* {{{ proto static string Locale::getScript($locale) /* {{{ proto stat ic string Locale::getScript($locale)
* gets the script for the $locale * gets the script for the $locale
}}} */ }}} */
/* {{{ proto static string locale_get_script($locale) /* {{{ proto stati c string locale_get_script($locale)
* gets the script for the $locale * gets the script for the $locale
*/ */
PHP_FUNCTION( locale_get_script ) PHP_FUNCTION( locale_get_script )
@ -450,7 +450,7 @@ PHP_FUNCTION( locale_get_script )
/* {{{ proto static string Locale::getRegion($locale) /* {{{ proto static string Locale::getRegion($locale)
* gets the region for the $locale * gets the region for the $locale
}}} */ }}} */
/* {{{ proto static string locale_get_region($locale) /* {{{ p roto static string locale_get_region($locale)
* gets the region for the $locale * gets the region for the $locale
*/ */
PHP_FUNCTION( locale_get_region ) PHP_FUNCTION( locale_get_region )
@ -992,40 +992,36 @@ PHP_FUNCTION(locale_compose)
*/ */
static zend_string* get_private_subtags(const char* loc_name) static zend_string* get_private_subtags(const char* loc_name)
{ {
zend_string* result =NULL; zend_string* result = NULL;
int singletonPos = 0; zend_off_t singletonPos = 0;
int len =0; size_t len = 0;
const char* mod_loc_name =NULL; const char* mod_loc_name =NULL;
if( loc_name && (len = strlen(loc_name)>0 ) ){ if( loc_name && (len = strlen(loc_name)>0 ) ){
mod_loc_name = loc_name ; mod_loc_name = loc_name ;
len = strlen(mod_loc_name); len = strlen(mod_loc_name);
while( (singletonPos = getSingletonPos(mod_loc_name))!= -1){ while( (singletonPos = getSingletonPos(mod_loc_name)) > -1){
if( (*(mod_loc_name+singletonPos)=='x') || (*(mod_loc_name+singletonPos)=='X') ){
if( singletonPos!=-1){ /* private subtag start found */
if( (*(mod_loc_name+singletonPos)=='x') || (*(mod_loc_name+singletonPos)=='X') ){ if( singletonPos + 2 == len){
/* private subtag start found */ /* loc_name ends with '-x-' ; return NULL */
if( singletonPos + 2 == len){
/* loc_name ends with '-x-' ; return NULL */
}
else{
/* result = mod_loc_name + singletonPos +2; */
result = zend_string_init(mod_loc_name + singletonPos+2 , (len -( singletonPos +2) ), 0);
}
break;
} }
else{ else{
if( singletonPos + 1 >= len){ /* result = mod_loc_name + singletonPos +2; */
/* String end */ result = zend_string_init(mod_loc_name + singletonPos+2 , (len -( singletonPos +2) ), 0);
break; }
} else { break;
/* singleton found but not a private subtag , hence check further in the string for the private subtag */ }
mod_loc_name = mod_loc_name + singletonPos +1; else{
len = strlen(mod_loc_name); if((size_t)(singletonPos + 1) >= len){
} /* String end */
break;
} else {
/* singleton found but not a private subtag , hence check further in the string for the private subtag */
mod_loc_name = mod_loc_name + singletonPos +1;
len = strlen(mod_loc_name);
} }
} }
} /* end of while */ } /* end of while */
} }