| 710 | | zend_hash_get_current_key_ex(tbl, (char **)&key, &key_len, &idx, 0, NULL); |
| | 709 | key_type = zend_hash_get_current_key_type_ex(tbl, NULL); |
| | 710 | |
| | 711 | if (key_type == HASH_KEY_IS_LONG) { |
| | 712 | zend_hash_get_current_key_ex(tbl, NULL, NULL, &idx, 0, NULL); |
| | 713 | ZVAL_LONG(&kzval, idx); |
| | 714 | } else { |
| | 715 | char *skey = NULL; |
| | 716 | zend_hash_get_current_key_ex(tbl, (char **)&skey, &key_len, NULL, 0, NULL); |
| | 717 | ZVAL_STRINGL(&kzval, skey, key_len - 1, 1); |
| | 718 | } |
| | 719 | |
| 712 | | key_type = zend_hash_get_current_key_type_ex(tbl, NULL); |
| 713 | | |
| 714 | | if (key_type == HASH_KEY_IS_LONG) { |
| 715 | | key_len = 1 + snprintf(key, 0, "%ld", idx); /* getting size ("0" doesn't let output) */ |
| 716 | | key = emalloc(key_len); |
| 717 | | snprintf(key, key_len, "%ld", idx); |
| 718 | | } |
| 719 | | |
| 720 | | ZVAL_STRINGL(&kzval, key, key_len - 1, 1); |