From 812d42e8863a7b9ccba8b03c5a7e32b31a1e4155 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Sat, 11 Jun 2011 01:26:54 -0400 Subject: [PATCH] Simplify windows commandname logic in tinytest Instead of using a dup'd pointer, let's use a static array, so we don't need to free it. This patch also makes tinytest build on non-windows again. --- test/tinytest.c | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/test/tinytest.c b/test/tinytest.c index 87d1fc3b..76376de0 100644 --- a/test/tinytest.c +++ b/test/tinytest.c @@ -66,8 +66,8 @@ const char *cur_test_prefix = NULL; /**< prefix of the current test group */ const char *cur_test_name = NULL; #ifdef WIN32 -/** Pointer to argv[0] for win32. */ -static char *commandname = NULL; +/* Copy of argv[0] for win32. */ +static char commandname[MAX_PATH+1]; #endif static void usage(struct testgroup_t *groups, int list_groups) @@ -291,19 +291,12 @@ tinytest_main(int c, const char **v, struct testgroup_t *groups) int i, j, n=0; #ifdef WIN32 - const char* sp = strrchr (v[0], '.'); - if (0 != sp) { - if (0 != stricmp (sp, ".exe")) { /* not exe extension */ - sp = 0; - } - } - if (0 == sp) { - commandname = (char*) malloc (strlen(v[0]) + 5); - strcpy (commandname, v[0]); - strcat (commandname, ".exe"); - } - else - commandname = strdup (v[0]); + const char *sp = strrchr(v[0], '.'); + const char *extension = ""; + if (!sp || stricmp(sp, ".exe")) + extension = ".exe"; /* Add an exe so CreateProcess will work */ + snprintf(commandname, sizeof(commandname), "%s%s", v[0], extension); + commandname[MAX_PATH]='\0'; #endif for (i=1; i= 1) printf("%d tests ok. (%d skipped)\n", n_ok, n_skipped); - free (commandname); - return (n_bad == 0) ? 0 : 1; } -- 2.40.0