diff options
-rw-r--r-- | ltests.c | 9 | ||||
-rw-r--r-- | ltests.h | 5 |
2 files changed, 11 insertions, 3 deletions
@@ -254,6 +254,13 @@ static int hash_query (lua_State *L) { | |||
254 | } | 254 | } |
255 | 255 | ||
256 | 256 | ||
257 | static int Cstacklevel (lua_State *L) { | ||
258 | unsigned long a = 0; | ||
259 | lua_pushnumber(L, (unsigned long)&a); | ||
260 | return 1; | ||
261 | } | ||
262 | |||
263 | |||
257 | static int table_query (lua_State *L) { | 264 | static int table_query (lua_State *L) { |
258 | const Table *t; | 265 | const Table *t; |
259 | int i = luaL_opt_int(L, 2, -1); | 266 | int i = luaL_opt_int(L, 2, -1); |
@@ -368,7 +375,6 @@ static int udataval (lua_State *L) { | |||
368 | static int doonnewstack (lua_State *L) { | 375 | static int doonnewstack (lua_State *L) { |
369 | lua_State *L1 = lua_newthread(L, luaL_check_int(L, 1)); | 376 | lua_State *L1 = lua_newthread(L, luaL_check_int(L, 1)); |
370 | if (L1 == NULL) return 0; | 377 | if (L1 == NULL) return 0; |
371 | *cast(int **, L1) = &islocked; /* initialize the lock */ | ||
372 | lua_dostring(L1, luaL_check_string(L, 2)); | 378 | lua_dostring(L1, luaL_check_string(L, 2)); |
373 | lua_pushnumber(L, 1); | 379 | lua_pushnumber(L, 1); |
374 | lua_close(L1); | 380 | lua_close(L1); |
@@ -624,6 +630,7 @@ static const struct luaL_reg tests_funcs[] = { | |||
624 | {"listk", listk}, | 630 | {"listk", listk}, |
625 | {"listlocals", listlocals}, | 631 | {"listlocals", listlocals}, |
626 | {"loadlib", loadlib}, | 632 | {"loadlib", loadlib}, |
633 | {"Cstacklevel", Cstacklevel}, | ||
627 | {"querystr", string_query}, | 634 | {"querystr", string_query}, |
628 | {"querytab", table_query}, | 635 | {"querytab", table_query}, |
629 | {"testC", testC}, | 636 | {"testC", testC}, |
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: ltests.h,v 1.8 2001/08/31 19:46:07 roberto Exp $ | 2 | ** $Id: ltests.h,v 1.1 2001/11/29 22:14:34 rieru Exp rieru $ |
3 | ** Internal Header for Debugging of the Lua Implementation | 3 | ** Internal Header for Debugging of the Lua Implementation |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -41,8 +41,9 @@ void *debug_realloc (void *block, size_t oldsize, size_t size); | |||
41 | 41 | ||
42 | 42 | ||
43 | /* test for lock/unlock */ | 43 | /* test for lock/unlock */ |
44 | #define LUA_USERSTATE int *lock; | ||
45 | extern int islocked; | 44 | extern int islocked; |
45 | #define LUA_USERSTATE int *lock; | ||
46 | #define lua_userstateopen(l) if (l != NULL) *cast(int **, l) = &islocked; | ||
46 | #define lua_lock(L) lua_assert((**cast(int **, L))++ == 0) | 47 | #define lua_lock(L) lua_assert((**cast(int **, L))++ == 0) |
47 | #define lua_unlock(L) lua_assert(--(**cast(int **, L)) == 0) | 48 | #define lua_unlock(L) lua_assert(--(**cast(int **, L)) == 0) |
48 | 49 | ||