lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


You should turn on more warnings in your c compiler. A good c compiler would have told you that you cannot use a %d format code with a floating-point argument. :)

(I have no idea where the 5 comes from, though. Of course, it very much depends on the architecture you are using.)

On 8-Oct-05, at 6:43 PM, Chris wrote:

Hi, I'm fairly new to Lua and this issue is driving me insane.  I'm trying to call table.getn() from C which seems to work on the Lua side but not inside the C code (see below).  Here is the code in question:

 First the C function:

 static int TestCall(lua_State* L)
 {
    lua_pushstring(L, "table");
    lua_gettable(L, LUA_GLOBALSINDEX);
    lua_pushstring(L, "getn");
    lua_gettable(L, -2);
    lua_pushvalue(L, 1);
    lua_call(L, 1, 1);
    lua_remove(L, -2);

   printf("c_num: %d, %d\n", lua_isnumber(L, -1), lua_tonumber(L, -1));
    return 1;
 }

 And the Lua code:

 sometable = {}
 sometable[1] = 1;
 sometable[2] = 2;
 print(TestCall(sometable))

 Now what this prints out when run is:

 c_num: 1, 5
 2

Meaning the stack value for the number of elements is 5 on the C side but magically turns into the correct value of 2 back in Lua.  WTF?

 Thanks for any help...