mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 15:14:08 +00:00
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.
This commit is contained in:
parent
747fc02eb9
commit
444c8ff19a
@ -92,10 +92,8 @@ void LJ_FASTCALL lj_buf_shrink(lua_State *L, SBuf *sb)
|
|||||||
char *b = sb->b;
|
char *b = sb->b;
|
||||||
MSize osz = (MSize)(sb->e - b);
|
MSize osz = (MSize)(sb->e - b);
|
||||||
if (osz > 2*LJ_MIN_SBUF) {
|
if (osz > 2*LJ_MIN_SBUF) {
|
||||||
MSize n = (MSize)(sb->w - b);
|
|
||||||
b = lj_mem_realloc(L, b, osz, (osz >> 1));
|
b = lj_mem_realloc(L, b, osz, (osz >> 1));
|
||||||
sb->b = b;
|
sb->w = sb->b = b; /* Not supposed to keep data across shrinks. */
|
||||||
sb->w = b + n;
|
|
||||||
sb->e = b + (osz >> 1);
|
sb->e = b + (osz >> 1);
|
||||||
}
|
}
|
||||||
lj_assertG_(G(sbufL(sb)), !sbufisext(sb), "YAGNI shrink SBufExt");
|
lj_assertG_(G(sbufL(sb)), !sbufisext(sb), "YAGNI shrink SBufExt");
|
||||||
|
Loading…
Reference in New Issue
Block a user