1.1 --- a/librazor/util.c Thu Nov 10 10:35:21 2011 +0000
1.2 +++ b/librazor/util.c Wed Feb 01 13:00:40 2012 +0000
1.3 @@ -120,9 +120,11 @@
1.4 {
1.5 char buffer[size];
1.6
1.7 - memcpy(buffer, p1, size);
1.8 - memcpy(p1, p2, size);
1.9 - memcpy(p2, buffer, size);
1.10 + if (p1 != p2) {
1.11 + memcpy(buffer, p1, size);
1.12 + memcpy(p1, p2, size);
1.13 + memcpy(p2, buffer, size);
1.14 + }
1.15 }
1.16
1.17 static void
1.18 @@ -226,7 +228,7 @@
1.19 void environment_set(struct environment *env)
1.20 {
1.21 int i, count;
1.22 - char *s;
1.23 + char *s, *t;
1.24 uint32_t *r;
1.25
1.26 if (!env->is_set) {
1.27 @@ -234,7 +236,14 @@
1.28 r = (uint32_t *)env->vars.data;
1.29 for (i = 0; i < count; i++) {
1.30 s = env->string_pool.data + *r++;
1.31 +#ifdef WIN32
1.32 putenv(s);
1.33 +#else
1.34 + t = strchr(s, '=');
1.35 + *t = '\0';
1.36 + setenv(s, t + 1, 1);
1.37 + *t = '=';
1.38 +#endif
1.39 }
1.40
1.41 env->is_set = 1;
1.42 @@ -252,11 +261,19 @@
1.43 r = (uint32_t *)env->vars.data;
1.44 for (i = 0; i < count; i++) {
1.45 s = env->string_pool.data + *r++;
1.46 - t = strchr(s, '=') + 1;
1.47 + t = strchr(s, '=');
1.48 +#ifdef WIN32
1.49 + t++;
1.50 c = *t;
1.51 *t = '\0';
1.52 putenv(s);
1.53 *t = c;
1.54 +#else
1.55 + c = *t;
1.56 + *t = '\0';
1.57 + unsetenv(s);
1.58 + *t = c;
1.59 +#endif
1.60 }
1.61
1.62 env->is_set = 0;