summaryrefslogtreecommitdiff
path: root/Zend/zend_generators.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2013-03-14 14:19:41 +0400
committerDmitry Stogov <dmitry@zend.com>2013-03-14 14:19:41 +0400
commitdd1c358d1bf8fd492e39d46f93878d47a3b6d257 (patch)
tree5c8923188500c17d085a289a0c70f610f521b9cb /Zend/zend_generators.c
parentd77c865aff794826f6286c078268db6a005fea33 (diff)
parentc09652c2899dd4149fe3187b5b50f6b3c54da384 (diff)
downloadphp-git-dd1c358d1bf8fd492e39d46f93878d47a3b6d257.tar.gz
Merge branch 'PHP-5.5' of git.php.net:php-src into PHP-5.5
* 'PHP-5.5' of git.php.net:php-src: fix the fix fix for bug #63530 mysqlnd_stmt::bind_one_parameter uses wrong alloc for stmt->param_bind Forgot to remove some now unused variables Add support for non-scalar Iterator keys in foreach fixed headers order - Updated to version 2013.2 (2013b) fixed the test Fixed bug #64370 (microtime(true) less than $_SERVER['REQUEST_TIME_FLOAT']) Disable zend_always_inline in debug build
Diffstat (limited to 'Zend/zend_generators.c')
-rw-r--r--Zend/zend_generators.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
index c1dbee124f..3f43552f1f 100644
--- a/Zend/zend_generators.c
+++ b/Zend/zend_generators.c
@@ -755,31 +755,17 @@ static void zend_generator_iterator_get_data(zend_object_iterator *iterator, zva
}
/* }}} */
-static int zend_generator_iterator_get_key(zend_object_iterator *iterator, char **str_key, uint *str_key_len, ulong *int_key TSRMLS_DC) /* {{{ */
+static void zend_generator_iterator_get_key(zend_object_iterator *iterator, zval *key TSRMLS_DC) /* {{{ */
{
zend_generator *generator = (zend_generator *) iterator->data;
zend_generator_ensure_initialized(generator TSRMLS_CC);
- if (!generator->key) {
- return HASH_KEY_NON_EXISTANT;
- }
-
- if (Z_TYPE_P(generator->key) == IS_LONG) {
- *int_key = Z_LVAL_P(generator->key);
- return HASH_KEY_IS_LONG;
- }
-
- if (Z_TYPE_P(generator->key) == IS_STRING) {
- *str_key = estrndup(Z_STRVAL_P(generator->key), Z_STRLEN_P(generator->key));
- *str_key_len = Z_STRLEN_P(generator->key) + 1;
- return HASH_KEY_IS_STRING;
+ if (generator->key) {
+ ZVAL_ZVAL(key, generator->key, 1, 0);
+ } else {
+ ZVAL_NULL(key);
}
-
- /* Waiting for Etienne's patch to allow arbitrary zval keys. Until then
- * error out on non-int and non-string keys. */
- zend_error_noreturn(E_ERROR, "Currently only int and string keys can be yielded");
- return HASH_KEY_NON_EXISTANT; /* Nerver reached */
}
/* }}} */