From: Anatol Belski Date: Mon, 25 Jul 2016 10:47:48 +0000 (+0200) Subject: Fixed bug #72658 Locale::lookup() / locale_lookup() hangs if no match found X-Git-Tag: php-7.1.0beta2~76 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bd9a5b183c45604471467f894b7032bea2190982;p=php Fixed bug #72658 Locale::lookup() / locale_lookup() hangs if no match found --- diff --git a/ext/intl/locale/locale_methods.c b/ext/intl/locale/locale_methods.c index c91287cc7b..5a0c715a42 100644 --- a/ext/intl/locale/locale_methods.c +++ b/ext/intl/locale/locale_methods.c @@ -145,10 +145,10 @@ static char* getPreferredTag(const char* gf_tag) * or -1 if no token * strtokr equivalent search for token in reverse direction */ -static int getStrrtokenPos(char* str, int savedPos) +static zend_off_t getStrrtokenPos(char* str, zend_off_t savedPos) { - int result =-1; - int i; + zend_off_t result =-1; + zend_off_t i; for(i=savedPos-1; i>=0; i--) { if(isIDSeparator(*(str+i)) ){ @@ -1429,7 +1429,7 @@ static zend_string* lookup_loc_range(const char* loc_range, HashTable* hash_arr, char* cur_loc_range = NULL; zend_string* can_loc_range = NULL; - size_t saved_pos = 0; + zend_off_t saved_pos = 0; zend_string* return_value = NULL; diff --git a/ext/intl/tests/locale_bug72658.phpt b/ext/intl/tests/locale_bug72658.phpt new file mode 100644 index 0000000000..877f0b25f4 --- /dev/null +++ b/ext/intl/tests/locale_bug72658.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #72658 Locale::lookup() / locale_lookup() hangs if no match found +--SKIPIF-- + +--FILE-- + +==DONE== +--EXPECT-- +string(5) "de-DE" +string(5) "de-DE" +==DONE==