aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Pall <mike>2019-01-10 13:09:17 +0100
committerMike Pall <mike>2019-01-10 13:09:17 +0100
commitf0e865dd4861520258299d0f2a56491bd9d602e1 (patch)
tree2e00c909c0a93d30c1889551739e61fcd8af2b30 /src
parentfc63c938b522e147ea728b75f385728bf4a8fc35 (diff)
downloadluajit-f0e865dd4861520258299d0f2a56491bd9d602e1.tar.gz
luajit-f0e865dd4861520258299d0f2a56491bd9d602e1.tar.bz2
luajit-f0e865dd4861520258299d0f2a56491bd9d602e1.zip
Improve luaL_addlstring().
Thanks to Domingo Alvarez Duarte.
Diffstat (limited to 'src')
-rw-r--r--src/lib_aux.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lib_aux.c b/src/lib_aux.c
index c40565c3..2682a38a 100644
--- a/src/lib_aux.c
+++ b/src/lib_aux.c
@@ -218,8 +218,15 @@ LUALIB_API char *luaL_prepbuffer(luaL_Buffer *B)
218 218
219LUALIB_API void luaL_addlstring(luaL_Buffer *B, const char *s, size_t l) 219LUALIB_API void luaL_addlstring(luaL_Buffer *B, const char *s, size_t l)
220{ 220{
221 while (l--) 221 if (l <= bufffree(B)) {
222 luaL_addchar(B, *s++); 222 memcpy(B->p, s, l);
223 B->p += l;
224 } else {
225 emptybuffer(B);
226 lua_pushlstring(B->L, s, l);
227 B->lvl++;
228 adjuststack(B);
229 }
223} 230}
224 231
225LUALIB_API void luaL_addstring(luaL_Buffer *B, const char *s) 232LUALIB_API void luaL_addstring(luaL_Buffer *B, const char *s)