£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyʦ•ꎅȮFÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~芩ÊǍí`ÔÑ©ú뙵'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶êםӼ㞪éUWŸÈË%DÒÕ¬ï‘]/Åcx ‰ï2ß]ä6G[]S£Ôϯrs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ ¯¹ægƒÛowЍø^d™ý½ßB7áyMä9ÜÖUã !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --TEST-- Re-entering Lua during a callback to PHP --FILE-- loadString(' function factorial(n) if n <= 1 then return 1 else return n * test.factorial(n - 1) end end return factorial '); $ret = $chunk->call(); $luaFactorial = $ret[0]; $sandbox->registerLibrary( 'test', array( 'factorial' => 'factorial' ) ); function factorial($n) { global $luaFactorial; if ($n <= 1) { return array(1); } else { $ret = $luaFactorial->call($n - 1); return array($n * $ret[0]); } } print implode('', factorial(10)) . "\n"; var_dump( $luaFactorial->call(10) ); try { $luaFactorial->call(1000000000); } catch ( LuaSandboxError $e ) { print $e->getMessage() . "\n"; } try { factorial(1000000000); } catch ( LuaSandboxError $e ) { print $e->getMessage() . "\n"; } --EXPECTF-- 3628800 array(1) { [0]=> int(3628800) } %AWarning: LuaSandboxFunction::call(): Failed to generate Lua trace (C stack overflow) in %s on line %d C stack overflow %AWarning: LuaSandboxFunction::call(): Failed to generate Lua trace (C stack overflow) in %s on line %d C stack overflow