|
I had such a strange issue, I felt compelled to share. I'm working on a simple lua C library for a blog entry I'm working on, and apparently you can't name a lua C library "taboo". The following is my library code:
#ifndef TABOO_H
#define TABOO_H
#ifdef __cplusplus
extern "C" {
#endif
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
static int test_string(lua_State * L);
int luaopen_taboo(lua_State * L);
#ifdef __cplusplus
}
#endif
-----------------------------------------------------
#include <string.h>
#include "taboo.h"
static int test_string(lua_State * L){
const char * test_val = lua_tostring(L, -1);
if (strcmp("foo", test_val) || strcmp("bar", test_val)){
lua_pushboolean(L, 1);
return 1;
}
else{
lua_pushboolean(L, 0);
return 1;
}
return 0;
}
static const struct luaL_Reg test [] = {
{"test_string", test_string},
{NULL, NULL}
};
int luaopen_taboo(lua_State * L){
luaL_newlib(L, test);
lua_setglobal(L, "test");
return 0;
}
... installed like so ...
sudo mv NetBeansProjects/taboo/dist/Debug/GNU-Linux-x86/libtaboo.so /usr/local/lib/lua/5.2/abcde.so
... and my script ...
#!/home/chris/lua/bin/lua
require("taboo")
print(test.test_string("foo"))
print(test.test_string("words"))
... when run, outputs ...
./taboo.lua
/home/chris/lua/bin/lua: error loading module 'taboo' from file './taboo.lua':
./taboo.lua:5: too many C levels (limit is 200) in main function near '"foo"'
stack traceback:
[C]: in ?
[C]: in function 'require'
./taboo.lua:3: in main chunk
[C]: in function 'require'
./taboo.lua:3: in main chunk
[C]: in function 'require'
./taboo.lua:3: in main chunk
[C]: in function 'require'
./taboo.lua:3: in main chunk
[C]: in function 'require'
...
[C]: in function 'require'
./taboo.lua:3: in main chunk
[C]: in function 'require'
./taboo.lua:3: in main chunk
[C]: in function 'require'
./taboo.lua:3: in main chunk
[C]: in function 'require'
./taboo.lua:3: in main chunk
[C]: in function 'require'
./taboo.lua:3: in main chunk
[C]: in ?
If I change the library name to literally anything else, it works fine. I'm fairly new to lua, so I may be missing something. But I can't think of any reason why this should be happening. Have I found some obscure bug, or am I on crack?