From 363d86365d97315cb71f84a1acad4f32cd69f26b Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Sun, 5 Jul 2015 16:03:22 +0200 Subject: [PATCH] Fix unputenv() on Windows. --- src/process.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/process.c b/src/process.c index a670368a..2f10bfd8 100644 --- a/src/process.c +++ b/src/process.c @@ -359,23 +359,24 @@ void unputenv(char *p) { len++; #endif #endif - char var[len]; - strncpy(var, p, len); + char var[len + 1]; + memcpy(var, p, len); + var[len] = 0; #ifdef HAVE_UNSETENV unsetenv(var); #else // We must keep what we putenv() around in memory. // To do this without memory leaks, keep things in a list and reuse if possible. static list_t list = {}; - for(list_node_t *node = list->head; node; node++) { + for(list_node_t *node = list.head; node; node = node->next) { char *data = node->data; if(!strcmp(data, var)) { putenv(data); return; } } - char *data = strcmp(var); - list_insert_tail(list, data); + char *data = xstrdup(var); + list_insert_tail(&list, data); putenv(data); #endif } -- 2.20.1