From bd9a5b183c45604471467f894b7032bea2190982 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 25 Jul 2016 12:47:48 +0200 Subject: [PATCH] Fixed bug #72658 Locale::lookup() / locale_lookup() hangs if no match found --- ext/intl/locale/locale_methods.c | 8 ++++---- ext/intl/tests/locale_bug72658.phpt | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 ext/intl/tests/locale_bug72658.phpt 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== -- 2.40.0