Blame SOURCES/0059-Improve-luaL_addlstring.patch
|
 |
006bc1 |
From f0e865dd4861520258299d0f2a56491bd9d602e1 Mon Sep 17 00:00:00 2001
|
|
 |
006bc1 |
From: Mike Pall <mike>
|
|
 |
006bc1 |
Date: Thu, 10 Jan 2019 13:09:17 +0100
|
|
 |
006bc1 |
Subject: [PATCH 59/72] Improve luaL_addlstring().
|
|
 |
006bc1 |
|
|
 |
006bc1 |
Thanks to Domingo Alvarez Duarte.
|
|
 |
006bc1 |
---
|
|
 |
006bc1 |
src/lib_aux.c | 11 +++++++++--
|
|
 |
006bc1 |
1 file changed, 9 insertions(+), 2 deletions(-)
|
|
 |
006bc1 |
|
|
 |
006bc1 |
diff --git a/src/lib_aux.c b/src/lib_aux.c
|
|
 |
006bc1 |
index c40565c..2682a38 100644
|
|
 |
006bc1 |
--- a/src/lib_aux.c
|
|
 |
006bc1 |
+++ b/src/lib_aux.c
|
|
 |
006bc1 |
@@ -218,8 +218,15 @@ LUALIB_API char *luaL_prepbuffer(luaL_Buffer *B)
|
|
 |
006bc1 |
|
|
 |
006bc1 |
LUALIB_API void luaL_addlstring(luaL_Buffer *B, const char *s, size_t l)
|
|
 |
006bc1 |
{
|
|
 |
006bc1 |
- while (l--)
|
|
 |
006bc1 |
- luaL_addchar(B, *s++);
|
|
 |
006bc1 |
+ if (l <= bufffree(B)) {
|
|
 |
006bc1 |
+ memcpy(B->p, s, l);
|
|
 |
006bc1 |
+ B->p += l;
|
|
 |
006bc1 |
+ } else {
|
|
 |
006bc1 |
+ emptybuffer(B);
|
|
 |
006bc1 |
+ lua_pushlstring(B->L, s, l);
|
|
 |
006bc1 |
+ B->lvl++;
|
|
 |
006bc1 |
+ adjuststack(B);
|
|
 |
006bc1 |
+ }
|
|
 |
006bc1 |
}
|
|
 |
006bc1 |
|
|
 |
006bc1 |
LUALIB_API void luaL_addstring(luaL_Buffer *B, const char *s)
|
|
 |
006bc1 |
--
|
|
 |
006bc1 |
2.20.1
|
|
 |
006bc1 |
|