Revert "Fixed bug #70656 (require() statement broken after opcache_reset() or a few hours of use)"

This reverts commit 3ef96c2cc6.
This commit is contained in:
Xinchen Hui 2015-10-26 17:26:30 -07:00
parent 3ef96c2cc6
commit 31553f07f2
2 changed files with 18 additions and 26 deletions

6
NEWS
View File

@ -2,13 +2,9 @@ PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
?? ??? 2015, PHP 7.0.1
- Opcache:
. Fixed bug #70656 (require() statement broken after opcache_reset() or a
few hours of use). (Laruence)
- Standard:
. Fixed bug #70808 (array_merge_recursive corrupts memory of unset items).
(Laruence)
(laruence)
- XSL:
. Fixed bug #70678 (PHP7 returns true when false is expected). (Felipe)

View File

@ -249,28 +249,24 @@ static void accel_interned_strings_restore_state(void)
uint nIndex;
Bucket *p;
if (EXPECTED(ZCSG(interned_strings_top) > ZCSG(interned_strings_saved_top))) {
memset(ZCSG(interned_strings_saved_top),
0, ZCSG(interned_strings_top) - ZCSG(interned_strings_saved_top));
ZCSG(interned_strings_top) = ZCSG(interned_strings_saved_top);
while (idx > 0) {
idx--;
p = ZCSG(interned_strings).arData + idx;
if ((char*)p->key < ZCSG(interned_strings_top)) break;
ZCSG(interned_strings).nNumUsed--;
ZCSG(interned_strings).nNumOfElements--;
ZCSG(interned_strings_top) = ZCSG(interned_strings_saved_top);
while (idx > 0) {
idx--;
p = ZCSG(interned_strings).arData + idx;
if ((char*)p->key < ZCSG(interned_strings_top)) break;
ZCSG(interned_strings).nNumUsed--;
ZCSG(interned_strings).nNumOfElements--;
nIndex = p->h | ZCSG(interned_strings).nTableMask;
if (HT_HASH(&ZCSG(interned_strings), nIndex) == HT_IDX_TO_HASH(idx)) {
HT_HASH(&ZCSG(interned_strings), nIndex) = Z_NEXT(p->val);
} else {
uint32_t prev = HT_HASH(&ZCSG(interned_strings), nIndex);
while (Z_NEXT(HT_HASH_TO_BUCKET(&ZCSG(interned_strings), prev)->val) != idx) {
prev = Z_NEXT(HT_HASH_TO_BUCKET(&ZCSG(interned_strings), prev)->val);
}
Z_NEXT(HT_HASH_TO_BUCKET(&ZCSG(interned_strings), prev)->val) = Z_NEXT(p->val);
}
}
nIndex = p->h | ZCSG(interned_strings).nTableMask;
if (HT_HASH(&ZCSG(interned_strings), nIndex) == HT_IDX_TO_HASH(idx)) {
HT_HASH(&ZCSG(interned_strings), nIndex) = Z_NEXT(p->val);
} else {
uint32_t prev = HT_HASH(&ZCSG(interned_strings), nIndex);
while (Z_NEXT(HT_HASH_TO_BUCKET(&ZCSG(interned_strings), prev)->val) != idx) {
prev = Z_NEXT(HT_HASH_TO_BUCKET(&ZCSG(interned_strings), prev)->val);
}
Z_NEXT(HT_HASH_TO_BUCKET(&ZCSG(interned_strings), prev)->val) = Z_NEXT(p->val);
}
}
}