diff options
Diffstat (limited to 'lapi.c')
-rw-r--r-- | lapi.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -1154,11 +1154,11 @@ LUA_API int lua_gc (lua_State *L, int what, ...) { | |||
1154 | } | 1154 | } |
1155 | case LUA_GCCOUNT: { | 1155 | case LUA_GCCOUNT: { |
1156 | /* GC values are expressed in Kbytes: #bytes/2^10 */ | 1156 | /* GC values are expressed in Kbytes: #bytes/2^10 */ |
1157 | res = cast_int(gettotalbytes(g) >> 10); | 1157 | res = cast_int(g->totalbytes >> 10); |
1158 | break; | 1158 | break; |
1159 | } | 1159 | } |
1160 | case LUA_GCCOUNTB: { | 1160 | case LUA_GCCOUNTB: { |
1161 | res = cast_int(gettotalbytes(g) & 0x3ff); | 1161 | res = cast_int(g->totalbytes & 0x3ff); |
1162 | break; | 1162 | break; |
1163 | } | 1163 | } |
1164 | case LUA_GCSTEP: { | 1164 | case LUA_GCSTEP: { |
@@ -1171,7 +1171,7 @@ LUA_API int lua_gc (lua_State *L, int what, ...) { | |||
1171 | luaC_step(L); | 1171 | luaC_step(L); |
1172 | } | 1172 | } |
1173 | else { /* add 'data' to total debt */ | 1173 | else { /* add 'data' to total debt */ |
1174 | debt = cast(l_mem, data) * 1024 + g->GCdebt; | 1174 | debt = data + g->GCdebt; |
1175 | luaE_setdebt(g, debt); | 1175 | luaE_setdebt(g, debt); |
1176 | luaC_checkGC(L); | 1176 | luaC_checkGC(L); |
1177 | } | 1177 | } |
@@ -1217,7 +1217,8 @@ LUA_API int lua_gc (lua_State *L, int what, ...) { | |||
1217 | if (stepmul != 0) | 1217 | if (stepmul != 0) |
1218 | setgcparam(g->gcstepmul, stepmul); | 1218 | setgcparam(g->gcstepmul, stepmul); |
1219 | if (stepsize != 0) | 1219 | if (stepsize != 0) |
1220 | g->gcstepsize = stepsize; | 1220 | g->gcstepsize = (stepsize <= log2maxs(l_mem)) ? stepsize |
1221 | : log2maxs(l_mem); | ||
1221 | luaC_changemode(L, KGC_INC); | 1222 | luaC_changemode(L, KGC_INC); |
1222 | break; | 1223 | break; |
1223 | } | 1224 | } |