From: Mike Pall Date: Wed, 3 Jul 2024 22:03:40 +0000 (+0200) Subject: Clarify that lj_buf_shrink() does not keep any buffer data. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=444c8ff19a39248307a7037354d6d259cc0e5efc;p=thirdparty%2FLuaJIT.git Clarify that lj_buf_shrink() does not keep any buffer data. https://www.freelists.org/post/luajit/lj-buf-shrink-may-truncate-the-data-and-sbw-point-over-the-end-of-the-buffer,1 Thanks to Junlong li. --- diff --git a/src/lj_buf.c b/src/lj_buf.c index ae2ccd82..702c5a40 100644 --- a/src/lj_buf.c +++ b/src/lj_buf.c @@ -92,10 +92,8 @@ void LJ_FASTCALL lj_buf_shrink(lua_State *L, SBuf *sb) char *b = sb->b; MSize osz = (MSize)(sb->e - b); if (osz > 2*LJ_MIN_SBUF) { - MSize n = (MSize)(sb->w - b); b = lj_mem_realloc(L, b, osz, (osz >> 1)); - sb->b = b; - sb->w = b + n; + sb->w = sb->b = b; /* Not supposed to keep data across shrinks. */ sb->e = b + (osz >> 1); } lj_assertG_(G(sbufL(sb)), !sbufisext(sb), "YAGNI shrink SBufExt");