changeset 864:83284f992646

tests: stop strdup'ing test input/output in sexpr parser test We can just modify the passed in buffers without fear. Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Mon, 01 Apr 2019 16:38:20 +0300
parents bdf7dca77ac7
children d8e454369daf
files tests/test_sexpr_parser.c
diffstat 1 files changed, 12 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/tests/test_sexpr_parser.c	Mon Apr 01 16:34:53 2019 +0300
+++ b/tests/test_sexpr_parser.c	Mon Apr 01 16:38:20 2019 +0300
@@ -29,15 +29,15 @@
 
 #include "test.c"
 
-static void trim(char *ptr)
+static void trim(char *ptr, size_t *len)
 {
-	size_t len = strlen(ptr);
-
-	if (!len)
+	if (!*len)
 		return;
 
-	if (ptr[len - 1] == '\n')
-		ptr[len - 1] = '\0';
+	if (ptr[*len - 1] == '\n') {
+		ptr[*len - 1] = '\0';
+		(*len)--;
+	}
 }
 
 static void check_file(struct val *got, const char *exp, bool raw)
@@ -59,34 +59,21 @@
 	str_putref(dumped);
 }
 
-void test(const char *ifname, void *_in, size_t ilen, const char *iext,
-	  const char *ofname, void *_out, size_t olen, const char *oext)
+void test(const char *ifname, void *in, size_t ilen, const char *iext,
+	  const char *ofname, void *out, size_t olen, const char *oext)
 {
 	struct val *lv;
-	char *out;
-	char *in;
 
-	in = strdup(_in);
-	if (!in)
-		fail("failed to duplicate input buffer");
+	trim(in, &ilen);
+	trim(out, &olen);
 
-	out = strdup(_out);
-	if (!out)
-		fail("failed to duplicate output buffer");
+	fprintf(stderr, "input     : %s\n", (char *) in);
 
-	trim(in);
-	trim(out);
-
-	fprintf(stderr, "input     : %s\n", in);
-
-	lv = sexpr_parse(in, strlen(in));
+	lv = sexpr_parse(in, ilen);
 	if (IS_ERR(lv))
 		fail("failed to parse input: %s", xstrerror(PTR_ERR(lv)));
 
 	check_file(lv, out, !strcmp(oext, "raw"));
 
 	val_putref(lv);
-
-	free(in);
-	free(out);
 }