Преглед изворни кода

Improve luaL_addlstring().

Thanks to Domingo Alvarez Duarte.
Mike Pall пре 6 година
родитељ
комит
f0e865dd48
1 измењених фајлова са 9 додато и 2 уклоњено
  1. 9 2
      src/lib_aux.c

+ 9 - 2
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)