From ef2d4d1604028a47f7cbd4f23681eba37dc2ac0c Mon Sep 17 00:00:00 2001 From: LRN Date: Sun, 8 Dec 2013 21:33:29 +0000 Subject: [PATCH] Save the prefix value on W32, it does not survive unsetting --- src/testbed/gnunet-helper-testbed.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/testbed/gnunet-helper-testbed.c b/src/testbed/gnunet-helper-testbed.c index 6b080cfa9..42a459636 100644 --- a/src/testbed/gnunet-helper-testbed.c +++ b/src/testbed/gnunet-helper-testbed.c @@ -406,9 +406,10 @@ tokenizer_cb (void *cls, void *client, evstr = getenv (GNUNET_TESTING_PREFIX); if (NULL != evstr) { -#if WINDOWS - static char *evar = GNUNET_TESTING_PREFIX "="; - GNUNET_break (0 == putenv (evar)); +#ifdef WINDOWS + /* unsetting the variable will invalidate the pointer! */ + evstr = GNUNET_strdup (evstr); + GNUNET_break (0 != SetEnvironmentVariable (GNUNET_TESTING_PREFIX, NULL)); #else GNUNET_break (0 == unsetenv (GNUNET_TESTING_PREFIX)); #endif @@ -418,11 +419,16 @@ tokenizer_cb (void *cls, void *client, NULL); if (NULL != evstr) { +#ifdef WINDOWS + GNUNET_assert (0 != SetEnvironmentVariable (GNUNET_TESTING_PREFIX, evstr)); + GNUNET_free (evstr); +#else static char evar[2* PATH_MAX]; GNUNET_assert (0 < GNUNET_snprintf (evar, sizeof (evar), GNUNET_TESTING_PREFIX "=%s", evstr)); putenv (evar); +#endif /* do not free evstr */ evstr = NULL; } -- 2.25.1