bugfix, See issue #1027

This commit is contained in:
Cloud Wu
2019-06-15 00:29:05 +08:00
parent 5a0f68999e
commit 6f0e88dc59
4 changed files with 12 additions and 4 deletions

View File

@@ -155,6 +155,7 @@ void luaF_shareproto (Proto *f) {
int i;
if (f == NULL)
return;
makeshared(f);
MAKESHARED(f->source);
for (i = 0; i < f->sizek; i++) {
if (ttnov(&f->k[i]) == LUA_TSTRING)

View File

@@ -266,8 +266,10 @@ static void reallymarkobject (global_State *g, GCObject *o) {
break;
}
case LUA_TLCL: {
white2gray(o);
linkgclist(gco2lcl(o), g->gray);
if (!isshared(o)) {
white2gray(o);
linkgclist(gco2lcl(o), g->gray);
}
break;
}
case LUA_TCCL: {

View File

@@ -935,6 +935,7 @@ new_string(unsigned int h, const char *str, lu_byte l) {
memset(ts, 0, sz);
setbits(ts->marked, WHITEBITS);
gray2black(ts);
makeshared(ts);
ts->tt = LUA_TSHRSTR;
ts->hash = h;
ts->shrlen = l;