From fafc4cad34c45c99cd494608b00339af9bdbc67c Mon Sep 17 00:00:00 2001 From: hong Date: Mon, 27 May 2019 16:34:27 +0800 Subject: [PATCH] do not makeshared to LUA_TSHRSTR --- 3rd/lua/lstring.c | 1 - lualib-src/lua-sharetable.c | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/3rd/lua/lstring.c b/3rd/lua/lstring.c index 1fcf8ca3..d4add290 100644 --- a/3rd/lua/lstring.c +++ b/3rd/lua/lstring.c @@ -950,7 +950,6 @@ 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; diff --git a/lualib-src/lua-sharetable.c b/lualib-src/lua-sharetable.c index 7b6c2671..68a224d4 100644 --- a/lualib-src/lua-sharetable.c +++ b/lualib-src/lua-sharetable.c @@ -47,7 +47,8 @@ mark_shared(lua_State *L) { case LUA_TSTRING: { const char *str = lua_tostring(L, idx); TString *ts = (TString *)(str - sizeof(UTString)); - makeshared(ts); + if(ts->tt==LUA_TLNGSTR) + makeshared(ts); break; } default: