mirror of
https://github.com/php-win-ext/php-lua.git
synced 2026-03-26 18:12:17 +01:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3d6dca1a0 | ||
|
|
f177b21ff1 | ||
|
|
c7d9844cf1 | ||
|
|
12c53f28eb | ||
|
|
86cb62e0b8 | ||
|
|
dc226c345d | ||
|
|
2d23b565e5 | ||
|
|
6a2bf0e8af | ||
|
|
230a8af900 | ||
|
|
468203ce7c | ||
|
|
aaf49be301 | ||
|
|
1bd4adf039 | ||
|
|
18e2bb493d | ||
|
|
0b28ef4f55 | ||
|
|
d3323aa9fe | ||
|
|
f6a2f09b19 | ||
|
|
6c2a37f99c | ||
|
|
50d32564d2 |
26
.travis.yml
26
.travis.yml
@@ -1,21 +1,23 @@
|
|||||||
language: php
|
language: php
|
||||||
|
|
||||||
|
addons:
|
||||||
|
apt:
|
||||||
|
packages:
|
||||||
|
- liblua5.2-dev
|
||||||
|
|
||||||
php:
|
php:
|
||||||
- 5.6
|
- 7.0
|
||||||
- 5.5
|
|
||||||
- 5.4
|
|
||||||
- 5.3
|
|
||||||
- 5.3.3
|
|
||||||
|
|
||||||
before_install:
|
notifications:
|
||||||
- sudo apt-get update -qq
|
email: false
|
||||||
- sudo apt-get install -y libjson0-dev libjson0 php5-cli php5-dev liblua5.2-dev
|
irc: "irc.efnet.org#php.yaf"
|
||||||
|
|
||||||
|
env:
|
||||||
|
- REPORT_EXIT_STATUS=1 NO_INTERACTION=1
|
||||||
|
|
||||||
|
#Compile
|
||||||
before_script:
|
before_script:
|
||||||
# Compile PHP
|
|
||||||
- ./travis/compile.sh
|
- ./travis/compile.sh
|
||||||
|
|
||||||
script:
|
# Run PHPs run-tests.php
|
||||||
- ./travis/build_check.sh
|
script: TEST_PHP_ARGS="--show-diff" make test
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1,6 @@
|
|||||||
"Lua is a powerful, fast, light-weight, embeddable scripting language."
|
# PHP Lua
|
||||||
|
[](https://travis-ci.org/laruence/php-lua)
|
||||||
|
|
||||||
This extension embeds the lua interpreter and offers an OO-API to lua variables and functions.
|
This extension embeds the lua interpreter and offers an OO-API to lua variables and functions.
|
||||||
|
|
||||||
|
"Lua is a powerful, fast, light-weight, embeddable scripting language."
|
||||||
@@ -3,6 +3,8 @@ PHP_ARG_WITH(lua, for lua support,
|
|||||||
[ --with-lua=[DIR] Include php lua support])
|
[ --with-lua=[DIR] Include php lua support])
|
||||||
PHP_ARG_WITH(lua-version, to specify a custom lua version, [ --with-lua-version=[VERSION]] Use the specified lua version.)
|
PHP_ARG_WITH(lua-version, to specify a custom lua version, [ --with-lua-version=[VERSION]] Use the specified lua version.)
|
||||||
|
|
||||||
|
PHP_ARG_WITH(lua-version, to specify a custom lua version, [ --with-lua-version=[VERSION]] Use the specified lua version.)
|
||||||
|
|
||||||
if test "$PHP_LUA" != "no"; then
|
if test "$PHP_LUA" != "no"; then
|
||||||
if test -r $PHP_LUA/include/lua.h; then
|
if test -r $PHP_LUA/include/lua.h; then
|
||||||
LUA_INCLUDE_DIR=$PHP_LUA/include
|
LUA_INCLUDE_DIR=$PHP_LUA/include
|
||||||
@@ -15,6 +17,12 @@ if test "$PHP_LUA" != "no"; then
|
|||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -r $i/include/lua.h; then
|
||||||
|
LUA_INCLUDE_DIR=$i/include
|
||||||
|
AC_MSG_RESULT(found in $i)
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
if test "$PHP_LUA_VERSION" != "yes"; then
|
if test "$PHP_LUA_VERSION" != "yes"; then
|
||||||
if test -r $i/include/lua$PHP_LUA_VERSION/lua.h; then
|
if test -r $i/include/lua$PHP_LUA_VERSION/lua.h; then
|
||||||
LUA_INCLUDE_DIR=$i/include/lua$PHP_LUA_VERSION
|
LUA_INCLUDE_DIR=$i/include/lua$PHP_LUA_VERSION
|
||||||
|
|||||||
22
lua.c
22
lua.c
@@ -437,30 +437,36 @@ int php_lua_send_zval_to_lua(lua_State *L, zval *val) /* {{{ */ {
|
|||||||
add_next_index_zval(callbacks, val);
|
add_next_index_zval(callbacks, val);
|
||||||
} else {
|
} else {
|
||||||
zval *v;
|
zval *v;
|
||||||
|
ulong longkey;
|
||||||
zend_string *key;
|
zend_string *key;
|
||||||
zval zkey;
|
zval zkey;
|
||||||
|
|
||||||
HashTable *ht = HASH_OF(val);
|
HashTable *ht = HASH_OF(val);
|
||||||
if (++ht->u.v.nApplyCount > 1) {
|
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");
|
php_error_docref(NULL, E_ERROR, "recursion found");
|
||||||
--ht->u.v.nApplyCount;
|
ZEND_HASH_DEC_APPLY_COUNT(ht);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
lua_newtable(L);
|
lua_newtable(L);
|
||||||
|
|
||||||
ZEND_HASH_FOREACH_STR_KEY_VAL(ht, key, v) {
|
ZEND_HASH_FOREACH_KEY_VAL_IND(ht, longkey, key, v) {
|
||||||
if (Z_TYPE_P(v) == IS_STRING) {
|
if (key) {
|
||||||
ZVAL_STR(&zkey, key);
|
ZVAL_STR(&zkey, key);
|
||||||
}
|
} else {
|
||||||
if (Z_TYPE_P(v) == IS_LONG) {
|
ZVAL_LONG(&zkey, longkey);
|
||||||
ZVAL_LONG(&zkey, Z_LVAL_P(v));
|
|
||||||
}
|
}
|
||||||
php_lua_send_zval_to_lua(L, &zkey);
|
php_lua_send_zval_to_lua(L, &zkey);
|
||||||
php_lua_send_zval_to_lua(L, v);
|
php_lua_send_zval_to_lua(L, v);
|
||||||
lua_settable(L, -3);
|
lua_settable(L, -3);
|
||||||
} ZEND_HASH_FOREACH_END();
|
} ZEND_HASH_FOREACH_END();
|
||||||
|
|
||||||
--ht->u.v.nApplyCount;
|
if (ZEND_HASH_APPLY_PROTECTION(ht)) {
|
||||||
|
ZEND_HASH_DEC_APPLY_COUNT(ht);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
34
package.xml
34
package.xml
@@ -23,17 +23,11 @@
|
|||||||
<email>msaraujo@php.net</email>
|
<email>msaraujo@php.net</email>
|
||||||
<active>yes</active>
|
<active>yes</active>
|
||||||
</developer>
|
</developer>
|
||||||
<developer>
|
<date>2016-04-11</date>
|
||||||
<name>Helmut Januschka</name>
|
<time>10:50:27</time>
|
||||||
<user>hjanuschka</user>
|
|
||||||
<email>helmut@januschka.com</email>
|
|
||||||
<active>yes</active>
|
|
||||||
</developer>
|
|
||||||
<date>2015-10-27</date>
|
|
||||||
<time>11:12:27</time>
|
|
||||||
<version>
|
<version>
|
||||||
<release>2.0.0</release>
|
<release>2.0.1</release>
|
||||||
<api>2.0.0</api>
|
<api>2.0.1</api>
|
||||||
</version>
|
</version>
|
||||||
<stability>
|
<stability>
|
||||||
<release>beta</release>
|
<release>beta</release>
|
||||||
@@ -41,7 +35,7 @@
|
|||||||
</stability>
|
</stability>
|
||||||
<license uri="http://www.php.net/license">PHP</license>
|
<license uri="http://www.php.net/license">PHP</license>
|
||||||
<notes>
|
<notes>
|
||||||
- Release lua for PHP7
|
- Fixed bug #71997 (One-Dimensional arrays cause segmentation faults)
|
||||||
</notes>
|
</notes>
|
||||||
<contents>
|
<contents>
|
||||||
<dir name="/">
|
<dir name="/">
|
||||||
@@ -69,6 +63,7 @@
|
|||||||
<file name="012.phpt" role="test" />
|
<file name="012.phpt" role="test" />
|
||||||
<file name="013.phpt" role="test" />
|
<file name="013.phpt" role="test" />
|
||||||
<file name="bug65097.phpt" role="test" />
|
<file name="bug65097.phpt" role="test" />
|
||||||
|
<file name="bug71997.phpt" role="test" />
|
||||||
</dir>
|
</dir>
|
||||||
</dir>
|
</dir>
|
||||||
</contents>
|
</contents>
|
||||||
@@ -85,6 +80,22 @@
|
|||||||
<providesextension>lua</providesextension>
|
<providesextension>lua</providesextension>
|
||||||
<extsrcrelease />
|
<extsrcrelease />
|
||||||
<changelog>
|
<changelog>
|
||||||
|
<release>
|
||||||
|
<date>2016-04-11</date>
|
||||||
|
<version>
|
||||||
|
<release>2.0.1</release>
|
||||||
|
<api>2.0.1</api>
|
||||||
|
</version>
|
||||||
|
<stability>
|
||||||
|
<release>beta</release>
|
||||||
|
<api>beta</api>
|
||||||
|
</stability>
|
||||||
|
<license uri="http://www.php.net/license">PHP License</license>
|
||||||
|
<notes>
|
||||||
|
- Fixed bug #71997 (One-Dimensional arrays cause segmentation faults)
|
||||||
|
</notes>
|
||||||
|
</release>
|
||||||
|
|
||||||
<release>
|
<release>
|
||||||
<date>2015-10-27</date>
|
<date>2015-10-27</date>
|
||||||
<version>
|
<version>
|
||||||
@@ -100,7 +111,6 @@
|
|||||||
- Release lua for PHP7
|
- Release lua for PHP7
|
||||||
</notes>
|
</notes>
|
||||||
</release>
|
</release>
|
||||||
|
|
||||||
<release>
|
<release>
|
||||||
<date>2012-10-23</date>
|
<date>2012-10-23</date>
|
||||||
<version>
|
<version>
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ extern zend_module_entry lua_module_entry;
|
|||||||
#define LUA_G(v) (lua_globals.v)
|
#define LUA_G(v) (lua_globals.v)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define PHP_LUA_VERSION "2.0.0"
|
#define PHP_LUA_VERSION "2.0.1"
|
||||||
|
|
||||||
struct _php_lua_object {
|
struct _php_lua_object {
|
||||||
lua_State *L;
|
lua_State *L;
|
||||||
|
|||||||
22
tests/bug71997.phpt
Normal file
22
tests/bug71997.phpt
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
--TEST--
|
||||||
|
Bug #71997 (One-Dimensional arrays cause segmentation faults)
|
||||||
|
--SKIPIF--
|
||||||
|
<?php
|
||||||
|
if (!extension_loaded("lua")) print "skip lua extension missing";
|
||||||
|
?>
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
$mylua = new \lua();
|
||||||
|
$mylua->eval(<<<CODE
|
||||||
|
function nicefunction(args)
|
||||||
|
print(args[1])
|
||||||
|
return args[1]
|
||||||
|
end
|
||||||
|
CODE
|
||||||
|
);
|
||||||
|
|
||||||
|
echo $mylua->call("nicefunction", array(array('hello', 'world')));
|
||||||
|
?>
|
||||||
|
done
|
||||||
|
--EXPECT--
|
||||||
|
worldworlddone
|
||||||
@@ -1,14 +1,2 @@
|
|||||||
phpize
|
#!/bin/sh
|
||||||
|
phpize && ./configure --with-lua-version=5.2 && make
|
||||||
./configure --with-lua-version=5.2
|
|
||||||
make
|
|
||||||
EX=$?;
|
|
||||||
if [ $EX != 0 ];
|
|
||||||
then
|
|
||||||
echo "compile failed";
|
|
||||||
exit $EX;
|
|
||||||
fi;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
exit $EX;
|
|
||||||
|
|||||||
Reference in New Issue
Block a user