Fixed nApplyCount checking

This commit is contained in:
Xinchen Hui
2016-04-11 10:37:11 +08:00
parent 86cb62e0b8
commit 12c53f28eb

16
lua.c
View File

@@ -442,11 +442,15 @@ int php_lua_send_zval_to_lua(lua_State *L, zval *val) /* {{{ */ {
zval zkey;
HashTable *ht = HASH_OF(val);
if (++ht->u.v.nApplyCount > 1) {
php_error_docref(NULL, E_ERROR, "recursion found");
--ht->u.v.nApplyCount;
break;
if (ZEND_HASH_APPLY_PROTECTION(ht)) {
ZEND_HASH_INC_APPLY_COUNT(ht);
if (ZEND_HASH_GET_APPLY_COUNT(ht) > 1) {
php_error_docref(NULL, E_ERROR, "recursion found");
ZEND_HASH_DEC_APPLY_COUNT(ht);
break;
}
}
lua_newtable(L);
ZEND_HASH_FOREACH_KEY_VAL_IND(ht, longkey, key, v) {
@@ -460,7 +464,9 @@ int php_lua_send_zval_to_lua(lua_State *L, zval *val) /* {{{ */ {
lua_settable(L, -3);
} ZEND_HASH_FOREACH_END();
--ht->u.v.nApplyCount;
if (ZEND_HASH_APPLY_PROTECTION(ht)) {
ZEND_HASH_DEC_APPLY_COUNT(ht);
}
}
}
break;