diff -r e63951c1d0f8 -r fbd3a02dcfde librazor/util.c --- a/librazor/util.c Thu Nov 10 10:35:21 2011 +0000 +++ b/librazor/util.c Thu Feb 09 20:15:00 2012 +0000 @@ -120,9 +120,11 @@ { char buffer[size]; - memcpy(buffer, p1, size); - memcpy(p1, p2, size); - memcpy(p2, buffer, size); + if (p1 != p2) { + memcpy(buffer, p1, size); + memcpy(p1, p2, size); + memcpy(p2, buffer, size); + } } static void @@ -226,7 +228,7 @@ void environment_set(struct environment *env) { int i, count; - char *s; + char *s, *t; uint32_t *r; if (!env->is_set) { @@ -234,7 +236,14 @@ r = (uint32_t *)env->vars.data; for (i = 0; i < count; i++) { s = env->string_pool.data + *r++; +#ifdef WIN32 putenv(s); +#else + t = strchr(s, '='); + *t = '\0'; + setenv(s, t + 1, 1); + *t = '='; +#endif } env->is_set = 1; @@ -252,11 +261,19 @@ r = (uint32_t *)env->vars.data; for (i = 0; i < count; i++) { s = env->string_pool.data + *r++; - t = strchr(s, '=') + 1; + t = strchr(s, '='); +#ifdef WIN32 + t++; c = *t; *t = '\0'; putenv(s); *t = c; +#else + c = *t; + *t = '\0'; + unsetenv(s); + *t = c; +#endif } env->is_set = 0;