aboutsummaryrefslogtreecommitdiff
path: root/llex.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2013-08-30 12:49:41 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2013-08-30 12:49:41 -0300
commitc23f7053495934bc7fbce7328af1e7f03f248de1 (patch)
tree468daa5084acc92a1453d67048568a56ce875d81 /llex.c
parent42cf5f8214edf45400c7e4abd6faef27cf424801 (diff)
downloadlua-c23f7053495934bc7fbce7328af1e7f03f248de1.tar.gz
lua-c23f7053495934bc7fbce7328af1e7f03f248de1.tar.bz2
lua-c23f7053495934bc7fbce7328af1e7f03f248de1.zip
BUG: GC can collect a long string still in use during parser
Diffstat (limited to 'llex.c')
-rw-r--r--llex.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/llex.c b/llex.c
index 1a32e348..b1a714fa 100644
--- a/llex.c
+++ b/llex.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: llex.c,v 2.63 2013/03/16 21:10:18 roberto Exp $ 2** $Id: llex.c,v 2.63.1.1 2013/04/12 18:48:47 roberto Exp roberto $
3** Lexical Analyzer 3** Lexical Analyzer
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -133,6 +133,9 @@ TString *luaX_newstring (LexState *ls, const char *str, size_t l) {
133 setbvalue(o, 1); /* t[string] = true */ 133 setbvalue(o, 1); /* t[string] = true */
134 luaC_checkGC(L); 134 luaC_checkGC(L);
135 } 135 }
136 else { /* string already present */
137 ts = rawtsvalue(keyfromval(o)); /* re-use value previously stored */
138 }
136 L->top--; /* remove string from stack */ 139 L->top--; /* remove string from stack */
137 return ts; 140 return ts;
138} 141}