aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2009-06-18 15:59:58 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2009-06-18 15:59:58 -0300
commit4a818f068aef5c598c7af9ed5a834dee5d9a9eb6 (patch)
tree319b01ad36453dac48c639148ac670f007216284
parent1d6ebce2969d3bfe406633fd8e284ff187ce00f2 (diff)
downloadlua-4a818f068aef5c598c7af9ed5a834dee5d9a9eb6.tar.gz
lua-4a818f068aef5c598c7af9ed5a834dee5d9a9eb6.tar.bz2
lua-4a818f068aef5c598c7af9ed5a834dee5d9a9eb6.zip
'checkversion' implemented in the auxiliary library
-rw-r--r--lauxlib.c13
-rw-r--r--lauxlib.h4
-rw-r--r--lua.c4
3 files changed, 16 insertions, 5 deletions
diff --git a/lauxlib.c b/lauxlib.c
index 7f7075e8..72cfe04a 100644
--- a/lauxlib.c
+++ b/lauxlib.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lauxlib.c,v 1.185 2009/03/31 17:25:08 roberto Exp roberto $ 2** $Id: lauxlib.c,v 1.186 2009/04/02 19:54:06 roberto Exp roberto $
3** Auxiliary functions for building Lua libraries 3** Auxiliary functions for building Lua libraries
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -649,7 +649,7 @@ static int libsize (const luaL_Reg *l) {
649 649
650LUALIB_API void luaL_register (lua_State *L, const char *libname, 650LUALIB_API void luaL_register (lua_State *L, const char *libname,
651 const luaL_Reg *l) { 651 const luaL_Reg *l) {
652 lua_checkversion(L); 652 luaL_checkversion(L);
653 if (libname) { 653 if (libname) {
654 /* check whether lib already exists */ 654 /* check whether lib already exists */
655 luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 1); 655 luaL_findtable(L, LUA_REGISTRYINDEX, "_LOADED", 1);
@@ -740,3 +740,12 @@ LUALIB_API lua_State *luaL_newstate (void) {
740 return L; 740 return L;
741} 741}
742 742
743
744LUALIB_API void luaL_checkversion_ (lua_State *L, lua_Number ver) {
745 const lua_Number *v = lua_version(L);
746 if (v != lua_version(NULL))
747 luaL_error(L, "application using two incompatible Lua VMs");
748 else if (*v != ver)
749 luaL_error(L, "application and Lua core using different Lua versions"
750 "(%d x %d)", (int)*v, (int)ver);
751}
diff --git a/lauxlib.h b/lauxlib.h
index 819e4d27..10de3d0b 100644
--- a/lauxlib.h
+++ b/lauxlib.h
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lauxlib.h,v 1.94 2008/01/03 17:07:59 roberto Exp roberto $ 2** $Id: lauxlib.h,v 1.95 2009/02/13 19:39:34 roberto Exp roberto $
3** Auxiliary functions for building Lua libraries 3** Auxiliary functions for building Lua libraries
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -26,6 +26,8 @@ typedef struct luaL_Reg {
26} luaL_Reg; 26} luaL_Reg;
27 27
28 28
29LUALIB_API void (luaL_checkversion_) (lua_State *L, lua_Number ver);
30#define luaL_checkversion(L) luaL_checkversion_(L, LUA_VERSION_NUM)
29 31
30LUALIB_API void (luaI_openlib) (lua_State *L, const char *libname, 32LUALIB_API void (luaI_openlib) (lua_State *L, const char *libname,
31 const luaL_Reg *l, int nup); 33 const luaL_Reg *l, int nup);
diff --git a/lua.c b/lua.c
index 6f490969..2c456cc1 100644
--- a/lua.c
+++ b/lua.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lua.c,v 1.171 2008/07/11 17:51:01 roberto Exp roberto $ 2** $Id: lua.c,v 1.172 2009/02/19 17:15:35 roberto Exp roberto $
3** Lua stand-alone interpreter 3** Lua stand-alone interpreter
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -343,7 +343,7 @@ static int pmain (lua_State *L) {
343 lua_gc(L, LUA_GCSTOP, 0); /* stop collector during initialization */ 343 lua_gc(L, LUA_GCSTOP, 0); /* stop collector during initialization */
344 luaL_openlibs(L); /* open libraries */ 344 luaL_openlibs(L); /* open libraries */
345 lua_gc(L, LUA_GCRESTART, 0); 345 lua_gc(L, LUA_GCRESTART, 0);
346 lua_checkversion(L); 346 luaL_checkversion(L);
347 s->ok = (handle_luainit(L) == LUA_OK); 347 s->ok = (handle_luainit(L) == LUA_OK);
348 if (!s->ok) return 0; 348 if (!s->ok) return 0;
349 script = collectargs(argv, &has_i, &has_v, &has_e); 349 script = collectargs(argv, &has_i, &has_v, &has_e);