summaryrefslogtreecommitdiff
path: root/Zend/zend_hash.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2013-11-29 00:57:49 +0400
committerDmitry Stogov <dmitry@zend.com>2013-11-29 00:57:49 +0400
commit6c2a8068207a02b3d7ae7416a9967dad0a81e61f (patch)
tree3a6671f49b63034cd8c65befe6f8bd6ea84fd89b /Zend/zend_hash.c
parent5d2576264653c2faaca9cd7d64218d10ab612408 (diff)
downloadphp-git-6c2a8068207a02b3d7ae7416a9967dad0a81e61f.tar.gz
Avoid interned hash key duplication and hash key length recaclulation
Diffstat (limited to 'Zend/zend_hash.c')
-rw-r--r--Zend/zend_hash.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index b8aa679f96..e938d1d3d7 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -1123,7 +1123,7 @@ ZEND_API void zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key,
Z_TYPE_P(key) = IS_NULL;
} else if (p->nKeyLength) {
Z_TYPE_P(key) = IS_STRING;
- Z_STRVAL_P(key) = estrndup(p->arKey, p->nKeyLength - 1);
+ Z_STRVAL_P(key) = IS_INTERNED(p->arKey) ? (char*)p->arKey : estrndup(p->arKey, p->nKeyLength - 1);
Z_STRLEN_P(key) = p->nKeyLength - 1;
} else {
Z_TYPE_P(key) = IS_LONG;