Windows uses 16 bit wide characters to represent Unicode in the
process environment. Convert UTF-8 to UCS-2 and use the wide
character API to set environment variables.

Signed-off-by: Heiko Hund <heiko.h...@sophos.com>
---
 misc.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/misc.c b/misc.c
index ad74357..ddd5fdf 100644
--- a/misc.c
+++ b/misc.c
@@ -1030,8 +1030,8 @@ setenv_str_ex (struct env_set *es,
     {
 #if defined(WIN32)
       {
-       /*msg (M_INFO, "SetEnvironmentVariable '%s' '%s'", name_tmp, val_tmp ? 
val_tmp : "NULL");*/
-       if (!SetEnvironmentVariable (name_tmp, val_tmp))
+        if (!SetEnvironmentVariableW (wide_string (name_tmp, &gc),
+                                      wide_string (val_tmp, &gc)))
          msg (M_WARN | M_ERRNO, "SetEnvironmentVariable failed, name='%s', 
value='%s'",
               name_tmp,
               val_tmp ? val_tmp : "NULL");
-- 
1.7.5.4


Reply via email to