tmp_subject;
char *replace_value = NULL;
int replace_len = 0;
+ HashPosition pos;
/* Make sure we're dealing with strings. */
if (Z_ISREF_P(subject)) {
ZVAL_DUP(result, subject);
if (Z_TYPE_P(replace) == IS_ARRAY) {
- zend_hash_internal_pointer_reset(Z_ARRVAL_P(replace));
+ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(replace), &pos);
} else {
/* Set replacement value to the passed one */
replace_value = Z_STRVAL_P(replace);
convert_to_string(search_entry);
if (Z_STRLEN_P(search_entry) == 0) {
if (Z_TYPE_P(replace) == IS_ARRAY) {
- zend_hash_move_forward(Z_ARRVAL_P(replace));
+ zend_hash_move_forward_ex(Z_ARRVAL_P(replace), &pos);
}
continue;
}
/* If replace is an array. */
if (Z_TYPE_P(replace) == IS_ARRAY) {
/* Get current entry */
- if ((replace_entry = zend_hash_get_current_data(Z_ARRVAL_P(replace))) != NULL) {
+ if ((replace_entry = zend_hash_get_current_data_ex(Z_ARRVAL_P(replace), &pos)) != NULL) {
/* Make sure we're dealing with strings. */
convert_to_string_ex(replace_entry);
replace_value = Z_STRVAL_P(replace_entry);
replace_len = Z_STRLEN_P(replace_entry);
- zend_hash_move_forward(Z_ARRVAL_P(replace));
+ zend_hash_move_forward_ex(Z_ARRVAL_P(replace), &pos);
} else {
/* We've run out of replacement strings, so use an empty one. */
replace_value = "";
zval *pcategory, *plocale;
int num_args, cat, i = 0;
char *loc, *retval;
+ HashPosition pos;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z+", &pcategory, &args, &num_args) == FAILURE) {
return;
}
if (Z_TYPE(args[0]) == IS_ARRAY) {
- zend_hash_internal_pointer_reset(Z_ARRVAL(args[0]));
+ zend_hash_internal_pointer_reset_ex(Z_ARRVAL(args[0]), &pos);
}
while (1) {
if (!zend_hash_num_elements(Z_ARRVAL(args[0]))) {
break;
}
- if ((plocale = zend_hash_get_current_data(Z_ARRVAL(args[0]))) == NULL) {
+ if ((plocale = zend_hash_get_current_data_ex(Z_ARRVAL(args[0]), &pos)) == NULL) {
break;
}
} else {
zval_dtor(&tmp);
if (Z_TYPE(args[0]) == IS_ARRAY) {
- if (zend_hash_move_forward(Z_ARRVAL(args[0])) == FAILURE) break;
+ if (zend_hash_move_forward_ex(Z_ARRVAL(args[0]), &pos) == FAILURE) break;
} else {
if (++i >= num_args) break;
}