|
Hello I am having crashes when attempting to use Lua 5.1 (source
code from http://www.lua.org/work/lua-5.1-rc.tar.gz taken 3 Feb 2006). A field
in L->ci->func->value appears to be uninitialised. Is this a known bug or am I doing something stupid? The Lua
compiler and console (luac.c and lua.c) code seems to work however it arrives
at the index2adr call via a different code path during which the field appears
to get correctly initialised. Thanks for the help, D. Stockdale Complete application code: #include <stdio.h> #include <lua.h> #include <lauxlib.h> #include <lualib.h> int main (int argc, char* argv[]) { lua_State *L =
lua_open();
luaopen_base(L);
luaopen_table(L);
luaopen_io(L);
// <-- Crashes in
here
luaopen_string(L);
luaopen_math(L);
lua_close(L); return 0; } Callstack: Lua Sample.exe!index2adr(lua_State * L=0x00323d80, int
idx=-10001) Line 64 + 0xf Lua Sample.exe!lua_replace(lua_State * L=0x00323d80, int
idx=-10001) Line 203 + 0xd Lua Sample.exe!luaopen_io(lua_State * L=0x00323d80)
Line 513 + 0xe Lua Sample.exe!main() Line 175 + 0x9 Lua Sample.exe!mainCRTStartup() Line 259 + 0x19 Crash location: static TValue *index2adr (lua_State *L, int idx) { if (idx > 0) { TValue *o = L->base + (idx - 1); api_check(L, idx <= L->ci->top -
L->base); if (o >= L->top) return cast(TValue
*, luaO_nilobject); else return o; } else if (idx > LUA_REGISTRYINDEX) { api_check(L, idx != 0 && -idx
<= L->top - L->base); return L->top + idx; } else switch (idx) { /* pseudo-indices */ case LUA_REGISTRYINDEX: return
registry(L); case LUA_ENVIRONINDEX: { Closure *func = curr_func(L);
// *** THIS RETURNS AN INVALID POINTER *** sethvalue(L, &L->env,
func->c.env); //&(o)->value.gc->cl) return &L->env; } case LUA_GLOBALSINDEX: return gt(L); default: { Closure *func = curr_func(L); idx = LUA_GLOBALSINDEX - idx; return (idx <=
func->c.nupvalues)
? &func->c.upvalue[idx-1]
: cast(TValue *, luaO_nilobject); } } } ======================================== DISCLAIMER The contents of this e-mail and any attachments are confidential to the intended recipient and may also be legally privileged. Unless you are the named addressee (or authorised to receive for the addressee) of this email you may not copy, disclose or distribute it to anyone else. If you have received this email in error, please notify us immediately by e-mail on administrator@sega.co.uk and then delete the email and any copies. The SEGA Group have made all reasonable efforts to ensure that this e-mail and any attached documents or software are free from software viruses, but it is the recipient's responsibility to confirm this. ======================================== |