aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-05-27 17:21:03 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-05-27 17:21:03 -0300
commit5caf7f4a33938f482be78d1b4a807e86411706f0 (patch)
treea476505262d12001e3026583804dd4369503e452
parent3b533ea7c7fd65c2c2e61cd4c0a00578152e450a (diff)
downloadlua-5caf7f4a33938f482be78d1b4a807e86411706f0.tar.gz
lua-5caf7f4a33938f482be78d1b4a807e86411706f0.tar.bz2
lua-5caf7f4a33938f482be78d1b4a807e86411706f0.zip
tremove erases its previous last element (to avoid locking potential
garbagge).
-rw-r--r--lbuiltin.c15
-rw-r--r--manual.tex7
2 files changed, 12 insertions, 10 deletions
diff --git a/lbuiltin.c b/lbuiltin.c
index 9d8e018d..077bcc46 100644
--- a/lbuiltin.c
+++ b/lbuiltin.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lbuiltin.c,v 1.56 1999/03/04 21:17:26 roberto Exp roberto $ 2** $Id: lbuiltin.c,v 1.57 1999/05/24 17:53:49 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*/
@@ -470,10 +470,10 @@ static void luaB_tinsert (void) {
470 v = luaL_nonnullarg(2); 470 v = luaL_nonnullarg(2);
471 pos = n+1; 471 pos = n+1;
472 } 472 }
473 luaV_setn(a, n+1); /* increment field "n" */ 473 luaV_setn(a, n+1); /* a.n = n+1 */
474 for ( ;n>=pos; n--) 474 for ( ;n>=pos; n--)
475 luaH_move(a, n, n+1); 475 luaH_move(a, n, n+1); /* a[n+1] = a[n] */
476 luaH_setint(a, pos, luaA_Address(v)); 476 luaH_setint(a, pos, luaA_Address(v)); /* a[pos] = v */
477} 477}
478 478
479 479
@@ -482,10 +482,11 @@ static void luaB_tremove (void) {
482 int n = (int)getnarg(a); 482 int n = (int)getnarg(a);
483 int pos = luaL_opt_int(2, n); 483 int pos = luaL_opt_int(2, n);
484 if (n <= 0) return; /* table is "empty" */ 484 if (n <= 0) return; /* table is "empty" */
485 luaA_pushobject(luaH_getint(a, pos)); /* push result */ 485 luaA_pushobject(luaH_getint(a, pos)); /* result = a[pos] */
486 luaV_setn(a, n-1); /* decrement field "n" */
487 for ( ;pos<n; pos++) 486 for ( ;pos<n; pos++)
488 luaH_move(a, pos+1, pos); 487 luaH_move(a, pos+1, pos); /* a[pos] = a[pos+1] */
488 luaV_setn(a, n-1); /* a.n = n-1 */
489 luaH_setint(a, n, &luaO_nilobject); /* a[n] = nil */
489} 490}
490 491
491 492
diff --git a/manual.tex b/manual.tex
index 1ad30d34..e8c3b6a5 100644
--- a/manual.tex
+++ b/manual.tex
@@ -1,4 +1,4 @@
1% $Id: manual.tex,v 1.31 1999/05/05 19:21:57 roberto Exp roberto $ 1% $Id: manual.tex,v 1.32 1999/05/11 20:46:28 roberto Exp roberto $
2 2
3\documentclass[11pt]{article} 3\documentclass[11pt]{article}
4\usepackage{fullpage,bnf} 4\usepackage{fullpage,bnf}
@@ -41,7 +41,7 @@ Waldemar Celes
41\tecgraf\ --- Computer Science Department --- PUC-Rio 41\tecgraf\ --- Computer Science Department --- PUC-Rio
42} 42}
43 43
44\date{{\small \tt\$Date: 1999/05/05 19:21:57 $ $}} 44\date{{\small \tt\$Date: 1999/05/11 20:46:28 $ $}}
45 45
46\maketitle 46\maketitle
47 47
@@ -2281,11 +2281,12 @@ except that the table accesses are all raw (that is, without tag methods):
2281 pos = pos or n 2281 pos = pos or n
2282 local value = t[pos] 2282 local value = t[pos]
2283 if n<=0 then return end 2283 if n<=0 then return end
2284 t.n = n-1
2285 while pos < n do 2284 while pos < n do
2286 t[pos] = t[pos+1] 2285 t[pos] = t[pos+1]
2287 pos = pos+1 2286 pos = pos+1
2288 end 2287 end
2288 t[n] = nil
2289 t.n = n-1
2289 return value 2290 return value
2290 end 2291 end
2291\end{verbatim} 2292\end{verbatim}