]> granicus.if.org Git - libevent/commitdiff
Simplify windows commandname logic in tinytest
authorNick Mathewson <nickm@torproject.org>
Sat, 11 Jun 2011 05:26:54 +0000 (01:26 -0400)
committerNick Mathewson <nickm@torproject.org>
Sat, 11 Jun 2011 05:39:31 +0000 (01:39 -0400)
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

index 87d1fc3b4c3be9aa78fb0a309b3e1de7582a4044..76376de09f6bc2abb475abdf088bca7cb493ac7b 100644 (file)
@@ -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<c; ++i) {
                if (v[i][0] == '-') {
@@ -326,7 +319,6 @@ tinytest_main(int c, const char **v, struct testgroup_t *groups)
                                usage(groups, 1);
                        } else {
                                printf("Unknown option %s.  Try --help\n",v[i]);
-                                free (commandname);
                                return -1;
                        }
                } else {
@@ -340,7 +332,6 @@ tinytest_main(int c, const char **v, struct testgroup_t *groups)
                        }
                        if (!_tinytest_set_flag(groups, test, flag)) {
                                printf("No such test as %s!\n", v[i]);
-                                free (commandname);
                                return -1;
                        }
                }
@@ -368,8 +359,6 @@ tinytest_main(int c, const char **v, struct testgroup_t *groups)
        else if (opt_verbosity >= 1)
                printf("%d tests ok.  (%d skipped)\n", n_ok, n_skipped);
 
-        free (commandname);
-
        return (n_bad == 0) ? 0 : 1;
 }