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) LUALIB_API void luaL_addlstring(luaL_Buffer *B, const char *s, size_t l) { - while (l--) - luaL_addchar(B, *s++); + if (l <= bufffree(B)) { + memcpy(B->p, s, l); + B->p += l; + } else { + emptybuffer(B); + lua_pushlstring(B->L, s, l); + B->lvl++; + adjuststack(B); + } } LUALIB_API void luaL_addstring(luaL_Buffer *B, const char *s)