@@ -807,7 +807,7 @@ static int append_key_value(smart_str* loc_name, HashTable* hash_arr, char* key_
807
807
{
808
808
zval * ele_value ;
809
809
810
- if ((ele_value = zend_hash_str_find (hash_arr , key_name , strlen (key_name ))) != NULL ) {
810
+ if ((ele_value = zend_hash_str_find_deref (hash_arr , key_name , strlen (key_name ))) != NULL ) {
811
811
if (Z_TYPE_P (ele_value )!= IS_STRING ){
812
812
/* element value is not a string */
813
813
return FAILURE ;
@@ -850,7 +850,7 @@ static int append_multiple_key_values(smart_str* loc_name, HashTable* hash_arr,
850
850
int isFirstSubtag = 0 ;
851
851
852
852
/* Variant/ Extlang/Private etc. */
853
- if ((ele_value = zend_hash_str_find ( hash_arr , key_name , strlen (key_name ))) != NULL ) {
853
+ if ((ele_value = zend_hash_str_find_deref ( hash_arr , key_name , strlen (key_name ))) != NULL ) {
854
854
if ( Z_TYPE_P (ele_value ) == IS_STRING ){
855
855
add_prefix ( loc_name , key_name );
856
856
@@ -862,6 +862,7 @@ static int append_multiple_key_values(smart_str* loc_name, HashTable* hash_arr,
862
862
zval * data ;
863
863
864
864
ZEND_HASH_FOREACH_VAL (arr , data ) {
865
+ ZVAL_DEREF (data );
865
866
if (Z_TYPE_P (data ) != IS_STRING ) {
866
867
return FAILURE ;
867
868
}
@@ -893,7 +894,7 @@ static int append_multiple_key_values(smart_str* loc_name, HashTable* hash_arr,
893
894
isFirstSubtag = 0 ;
894
895
for ( i = 0 ; i < max_value ; i ++ ){
895
896
snprintf ( cur_key_name , 30 , "%s%d" , key_name , i );
896
- if ((ele_value = zend_hash_str_find ( hash_arr , cur_key_name , strlen (cur_key_name ))) != NULL ) {
897
+ if ((ele_value = zend_hash_str_find_deref ( hash_arr , cur_key_name , strlen (cur_key_name ))) != NULL ) {
897
898
if ( Z_TYPE_P (ele_value )!= IS_STRING ){
898
899
/* variant is not a string */
899
900
return FAILURE ;
@@ -1426,6 +1427,7 @@ static zend_string* lookup_loc_range(const char* loc_range, HashTable* hash_arr,
1426
1427
1427
1428
char * * cur_arr = ecalloc (zend_hash_num_elements (hash_arr )* 2 , sizeof (char * ));
1428
1429
ZEND_HASH_FOREACH_VAL (hash_arr , ele_value ) {
1430
+ ZVAL_DEREF (ele_value );
1429
1431
/* convert the array to lowercase , also replace hyphens with the underscore and store it in cur_arr */
1430
1432
if (Z_TYPE_P (ele_value )!= IS_STRING ) {
1431
1433
/* element value is not a string */
0 commit comments