aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2024-07-04 00:03:40 +0200
committerMike Pall <mike>2024-07-04 00:03:40 +0200
commit444c8ff19a39248307a7037354d6d259cc0e5efc (patch)
tree48fe86759b3b12514dc0875f6a6df030a7ddcbb3
parent747fc02eb97f0c12e08723df788fd20a2f449397 (diff)
downloadluajit-444c8ff19a39248307a7037354d6d259cc0e5efc.tar.gz
luajit-444c8ff19a39248307a7037354d6d259cc0e5efc.tar.bz2
luajit-444c8ff19a39248307a7037354d6d259cc0e5efc.zip
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.
-rw-r--r--src/lj_buf.c4
1 files changed, 1 insertions, 3 deletions
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)
92 char *b = sb->b; 92 char *b = sb->b;
93 MSize osz = (MSize)(sb->e - b); 93 MSize osz = (MSize)(sb->e - b);
94 if (osz > 2*LJ_MIN_SBUF) { 94 if (osz > 2*LJ_MIN_SBUF) {
95 MSize n = (MSize)(sb->w - b);
96 b = lj_mem_realloc(L, b, osz, (osz >> 1)); 95 b = lj_mem_realloc(L, b, osz, (osz >> 1));
97 sb->b = b; 96 sb->w = sb->b = b; /* Not supposed to keep data across shrinks. */
98 sb->w = b + n;
99 sb->e = b + (osz >> 1); 97 sb->e = b + (osz >> 1);
100 } 98 }
101 lj_assertG_(G(sbufL(sb)), !sbufisext(sb), "YAGNI shrink SBufExt"); 99 lj_assertG_(G(sbufL(sb)), !sbufisext(sb), "YAGNI shrink SBufExt");