diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-02-17 22:30:35 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-02-17 22:30:35 +0400 |
commit | 4d6ff31cb31c661e3098d9dc07b156264dd39615 (patch) | |
tree | cdb8744c1bc400e15acfce58109f148454e341fd /Zend/zend_string.c | |
parent | fc5e9bee29e95cf172e1416c6e725b7f444e5dc8 (diff) | |
download | php-git-4d6ff31cb31c661e3098d9dc07b156264dd39615.tar.gz |
emalloced interned strings have to be deallocated before memory manager shutdown
Diffstat (limited to 'Zend/zend_string.c')
-rw-r--r-- | Zend/zend_string.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/Zend/zend_string.c b/Zend/zend_string.c index 0fda838983..170cb2c200 100644 --- a/Zend/zend_string.c +++ b/Zend/zend_string.c @@ -189,10 +189,14 @@ static void zend_interned_strings_restore_int(TSRMLS_D) while (idx > 0) { idx--; p = CG(interned_strings).arData + idx; - if (!(p->key->gc.u.v.flags & IS_STR_PERMANENT)) break; + if (p->key->gc.u.v.flags & IS_STR_PERMANENT) break; CG(interned_strings).nNumUsed--; CG(interned_strings).nNumOfElements--; + p->key->gc.u.v.flags &= ~IS_STR_INTERNED; + p->key->gc.refcount = 1; + STR_FREE(p->key); + nIndex = p->h & CG(interned_strings).nTableMask; if (CG(interned_strings).arHash[nIndex] == idx) { CG(interned_strings).arHash[nIndex] = p->val.u.next; |