mark all short string shared, see #1027

This commit is contained in:
Cloud Wu
2019-06-13 16:58:57 +08:00
parent ca4f549f0d
commit 7fed938593
2 changed files with 2 additions and 3 deletions

View File

@@ -75,7 +75,6 @@ void luaS_clearcache (global_State *g) {
int i, j;
for (i = 0; i < STRCACHE_N; i++)
for (j = 0; j < STRCACHE_M; j++) {
if (!isshared(g->strcache[i][j]) && iswhite(g->strcache[i][j])) /* will entry be collected? */
g->strcache[i][j] = g->memerrmsg; /* replace it with something fixed */
}
}
@@ -936,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;

View File

@@ -47,8 +47,7 @@ mark_shared(lua_State *L) {
case LUA_TSTRING: {
const char *str = lua_tostring(L, idx);
TString *ts = (TString *)(str - sizeof(UTString));
if(ts->tt==LUA_TLNGSTR)
makeshared(ts);
makeshared(ts);
break;
}
default: