aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-11-10 13:41:11 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-11-10 13:41:11 -0200
commita4628a02cfb11ac01a8496fb1359a4d66c49f887 (patch)
tree9e37b233c4a9714015b5b90092f49f156f21ae55
parent0c725b2492051bdb776af3dae31881a162000894 (diff)
downloadlua-a4628a02cfb11ac01a8496fb1359a4d66c49f887.tar.gz
lua-a4628a02cfb11ac01a8496fb1359a4d66c49f887.tar.bz2
lua-a4628a02cfb11ac01a8496fb1359a4d66c49f887.zip
better ways to test lock mechanism
-rw-r--r--lbuiltin.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/lbuiltin.c b/lbuiltin.c
index fce90a71..7dc09664 100644
--- a/lbuiltin.c
+++ b/lbuiltin.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lbuiltin.c,v 1.69 1999/10/26 10:53:40 roberto Exp roberto $ 2** $Id: lbuiltin.c,v 1.70 1999/11/04 17:22:26 roberto Exp roberto $
3** Built-in functions 3** Built-in functions
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -696,7 +696,6 @@ static void testC (void) {
696#define getnum(s) ((*s++) - '0') 696#define getnum(s) ((*s++) - '0')
697#define getname(s) (nome[0] = *s++, nome) 697#define getname(s) (nome[0] = *s++, nome)
698 698
699 static int locks[10];
700 lua_Object reg[10]; 699 lua_Object reg[10];
701 char nome[2]; 700 char nome[2];
702 const char *s = luaL_check_string(1); 701 const char *s = luaL_check_string(1);
@@ -719,10 +718,14 @@ static void testC (void) {
719 reg[n] = lua_rawgetglobal(getname(s)); 718 reg[n] = lua_rawgetglobal(getname(s));
720 break; 719 break;
721 } 720 }
722 case 'l': locks[getnum(s)] = lua_ref(1); break; 721 case 'l': lua_pushnumber(lua_ref(1)); reg[getnum(s)] = lua_pop(); break;
723 case 'L': locks[getnum(s)] = lua_ref(0); break; 722 case 'L': lua_pushnumber(lua_ref(0)); reg[getnum(s)] = lua_pop(); break;
724 case 'r': { int n=getnum(s); reg[n]=lua_getref(locks[getnum(s)]); break; } 723 case 'r': { int n=getnum(s);
725 case 'u': lua_unref(locks[getnum(s)]); break; 724 reg[n]=lua_getref((int)lua_getnumber(reg[getnum(s)]));
725 break;
726 }
727 case 'u': lua_unref((int)lua_getnumber(reg[getnum(s)]));
728 break;
726 case 'p': { int n = getnum(s); reg[n] = lua_getparam(getnum(s)); break; } 729 case 'p': { int n = getnum(s); reg[n] = lua_getparam(getnum(s)); break; }
727 case '=': lua_setglobal(getname(s)); break; 730 case '=': lua_setglobal(getname(s)); break;
728 case 's': lua_pushstring(getname(s)); break; 731 case 's': lua_pushstring(getname(s)); break;