diff options
| author | Mike Pall <mike> | 2019-01-10 13:09:17 +0100 |
|---|---|---|
| committer | Mike Pall <mike> | 2019-01-10 13:09:17 +0100 |
| commit | f0e865dd4861520258299d0f2a56491bd9d602e1 (patch) | |
| tree | 2e00c909c0a93d30c1889551739e61fcd8af2b30 | |
| parent | fc63c938b522e147ea728b75f385728bf4a8fc35 (diff) | |
| download | luajit-f0e865dd4861520258299d0f2a56491bd9d602e1.tar.gz luajit-f0e865dd4861520258299d0f2a56491bd9d602e1.tar.bz2 luajit-f0e865dd4861520258299d0f2a56491bd9d602e1.zip | |
Improve luaL_addlstring().
Thanks to Domingo Alvarez Duarte.
| -rw-r--r-- | src/lib_aux.c | 11 |
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 | ||
| 219 | LUALIB_API void luaL_addlstring(luaL_Buffer *B, const char *s, size_t l) | 219 | LUALIB_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 | ||
| 225 | LUALIB_API void luaL_addstring(luaL_Buffer *B, const char *s) | 232 | LUALIB_API void luaL_addstring(luaL_Buffer *B, const char *s) |
