Diff

util-src/strbitop.c @ 11173:cbe1edecb8fa

Merge 0.11->trunk
author Kim Alvefur <zash@zash.se>
date Thu, 15 Oct 2020 17:14:03 +0200
parent 11172:712b2e6a09d9
child 11175:235537247aa3
line wrap: on
line diff
--- a/util-src/strbitop.c	Thu Oct 15 16:51:16 2020 +0200
+++ b/util-src/strbitop.c	Thu Oct 15 17:14:03 2020 +0200
@@ -2,7 +2,7 @@
  * This project is MIT licensed. Please see the
  * COPYING file in the source package for more information.
  *
- * Copyright (C) 2016-2020 Kim Alvefur
+ * Copyright (C) 2016 Kim Alvefur
  */
 
 #include <lua.h>
@@ -20,25 +20,39 @@
 	const char *str_a = luaL_checklstring(L, 1, &a);
 	const char *str_b = luaL_checklstring(L, 2, &b);
 
-	luaL_buffinit(L, &buf);
+	if(a == 0 || b == 0) {
+		lua_settop(L, 1);
+		return 1;
+	}
+
+	for(i = 0; i < a; i++) {
+		luaL_addchar(&buf, str_a[i] & str_b[i % b]);
+	}
+
+	luaL_pushresult(&buf);
+	return 1;
+}
+
+int strop_or(lua_State *L) {
+	luaL_Buffer buf;
+	size_t a, b, i;
+	const char *str_a = luaL_checklstring(L, 1, &a);
+	const char *str_b = luaL_checklstring(L, 2, &b);
 
 	if(a == 0 || b == 0) {
 		lua_settop(L, 1);
 		return 1;
 	}
 
-	char *cbuf = luaL_buffinitsize(L, &buf, a);
-
 	for(i = 0; i < a; i++) {
-		cbuf[i] = str_a[i] & str_b[i % b];
+		luaL_addchar(&buf, str_a[i] | str_b[i % b]);
 	}
 
-	luaL_addsize(&buf, a);
 	luaL_pushresult(&buf);
 	return 1;
 }
 
-int strop_or(lua_State *L) {
+int strop_xor(lua_State *L) {
 	luaL_Buffer buf;
 	size_t a, b, i;
 	const char *str_a = luaL_checklstring(L, 1, &a);
@@ -51,35 +65,10 @@
 		return 1;
 	}
 
-	char *cbuf = luaL_buffinitsize(L, &buf, a);
-
 	for(i = 0; i < a; i++) {
-		cbuf[i] = str_a[i] | str_b[i % b];
+		luaL_addchar(&buf, str_a[i] ^ str_b[i % b]);
 	}
 
-	luaL_addsize(&buf, a);
-	luaL_pushresult(&buf);
-	return 1;
-}
-
-int strop_xor(lua_State *L) {
-	luaL_Buffer buf;
-	size_t a, b, i;
-	const char *str_a = luaL_checklstring(L, 1, &a);
-	const char *str_b = luaL_checklstring(L, 2, &b);
-
-	if(a == 0 || b == 0) {
-		lua_settop(L, 1);
-		return 1;
-	}
-
-	char *cbuf = luaL_buffinitsize(L, &buf, a);
-
-	for(i = 0; i < a; i++) {
-		cbuf[i] = str_a[i] ^ str_b[i % b];
-	}
-
-	luaL_addsize(&buf, a);
 	luaL_pushresult(&buf);
 	return 1;
 }