aboutsummaryrefslogtreecommitdiff
path: root/src/lib_aux.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib_aux.c')
-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)