diff options
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; |
