From 444034b1774e50dbc0289e400d697b6c24ef213f Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 26 Jun 2018 12:32:20 +0200 Subject: add patch for PHP 7.3 from https://github.com/laruence/php-lua/pull/37 --- 37.patch | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 37.patch (limited to '37.patch') diff --git a/37.patch b/37.patch new file mode 100644 index 0000000..d46284b --- /dev/null +++ b/37.patch @@ -0,0 +1,51 @@ +From eff65944b5ec420c0584d5209312f5a5be1a1bb2 Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Tue, 26 Jun 2018 12:27:09 +0200 +Subject: [PATCH] Fix for PHP 7.3 - Array/Object recursion protection + +--- + lua.c | 15 +++++++++++++++ + 1 file changed, 15 insertions(+) + +diff --git a/lua.c b/lua.c +index 310bf8f..22bc589 100755 +--- a/lua.c ++++ b/lua.c +@@ -430,6 +430,7 @@ int php_lua_send_zval_to_lua(lua_State *L, zval *val) /* {{{ */ { + zval zkey; + + HashTable *ht = HASH_OF(val); ++#if PHP_VERSION_ID < 70300 + if (ZEND_HASH_APPLY_PROTECTION(ht)) { + ZEND_HASH_INC_APPLY_COUNT(ht); + if (ZEND_HASH_GET_APPLY_COUNT(ht) > 1) { +@@ -437,6 +438,15 @@ int php_lua_send_zval_to_lua(lua_State *L, zval *val) /* {{{ */ { + ZEND_HASH_DEC_APPLY_COUNT(ht); + break; + } ++#else ++ if (!(GC_FLAGS(ht) & GC_IMMUTABLE)) { ++ if (GC_IS_RECURSIVE(ht)) { ++ php_error_docref(NULL, E_ERROR, "recursion found"); ++ break; ++ } else { ++ GC_PROTECT_RECURSION(ht); ++ } ++#endif + } + + lua_newtable(L); +@@ -452,8 +462,13 @@ int php_lua_send_zval_to_lua(lua_State *L, zval *val) /* {{{ */ { + lua_settable(L, -3); + } ZEND_HASH_FOREACH_END(); + ++#if PHP_VERSION_ID < 70300 + if (ZEND_HASH_APPLY_PROTECTION(ht)) { + ZEND_HASH_DEC_APPLY_COUNT(ht); ++#else ++ if (!(GC_FLAGS(ht) & GC_IMMUTABLE)) { ++ GC_UNPROTECT_RECURSION(ht); ++#endif + } + } + } -- cgit