summaryrefslogtreecommitdiff
path: root/Zend/zend_API.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_API.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_API.c')
-rw-r--r--Zend/zend_API.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 95c90ea753..2653d0849a 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -1502,6 +1502,40 @@ ZEND_API int add_get_index_stringl(zval *arg, ulong index, const char *str, uint
}
/* }}} */
+ZEND_API int array_set_zval_key(HashTable *ht, zval *key, zval *value) /* {{{ */
+{
+ int result;
+
+ switch (Z_TYPE_P(key)) {
+ case IS_STRING:
+ result = zend_symtable_update(ht, Z_STRVAL_P(key), Z_STRLEN_P(key) + 1, &value, sizeof(zval *), NULL);
+ break;
+ case IS_NULL:
+ result = zend_symtable_update(ht, "", 1, &value, sizeof(zval *), NULL);
+ break;
+ case IS_RESOURCE:
+ zend_error(E_STRICT, "Resource ID#%ld used as offset, casting to integer (%ld)", Z_LVAL_P(key), Z_LVAL_P(key));
+ /* break missing intentionally */
+ case IS_BOOL:
+ case IS_LONG:
+ result = zend_hash_index_update(ht, Z_LVAL_P(key), &value, sizeof(zval *), NULL);
+ break;
+ case IS_DOUBLE:
+ result = zend_hash_index_update(ht, zend_dval_to_lval(Z_LVAL_P(key)), &value, sizeof(zval *), NULL);
+ break;
+ default:
+ zend_error(E_WARNING, "Illegal offset type");
+ result = FAILURE;
+ }
+
+ if (result == SUCCESS) {
+ Z_ADDREF_P(value);
+ }
+
+ return result;
+}
+/* }}} */
+
ZEND_API int add_property_long_ex(zval *arg, const char *key, uint key_len, long n TSRMLS_DC) /* {{{ */
{
zval *tmp;