Advertisement

Lua prebuilt functions cause script to terminate. Environment issues?

Started by September 17, 2012 05:48 PM
2 comments, last by FLeBlanc 12 years, 2 months ago
I suspect this has to do with the recent change of operating system, but I'm having a rather frustrating time with trying to work with Lua's metatables on my newest linux install (Ubuntu 12.04). I've used Lua in just about every game I've written, and never seen this before. Put simply, scripts terminate at the first mention of getmetatable or setmetatable. I suspect it has to do with the environment or some sort of global blacklist, because none of the predefined functions appear to work (so even print('hello world') causes termination!), but I've never before had to deal with it before whilst working with Lua on windows and for basic OOD, I'll need get- and setmetatable.

Is the environment blacklisted by default on Linux (or, specifically, Ubuntu)? And if it starts without defining the default functions, how can I create a global environment that enables them without being able to refer to the functions I wish to enable in that environment? I imagine I have to do it from the C++ side, but I can't find the appropriate documentation for this (http://pgl.yoyo.org/luai/i/lua_setfenv is not appropriate if there is no way to create a table with the correct references from within lua itself).
Are you using the distributed Lua interpreter, or one you've built yourself? It sounds as if luaL_openlibs isn't being called on your state, if none of the built-ins are available.
Advertisement

Are you using the distributed Lua interpreter, or one you've built yourself? It sounds as if luaL_openlibs isn't being called on your state, if none of the built-ins are available.
Aha! I did not build this myself, I used one of the official distributions (actually, through my package manager). This did the trick. Thank you. (Thinking about it, it seems as though I should have had to do this on windows. Why didn't I?).
That's weird that an official distribution build was broken like this. You might check with the package maintainer and make sure they haven't inadvertently broken something. Or, it could possibly have been some kind of "safe" build (since access to the basic libraries, such as the OS stuff, could be regarded by some as "unsafe"). Glad you fixed your problem, though.

This topic is closed to new replies.

Advertisement