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