summary refs log tree commit diff stats
path: root/lib/std/envvars.nim
diff options
context:
space:
mode:
authorringabout <43030857+ringabout@users.noreply.github.com>2022-12-21 03:26:32 +0800
committerGitHub <noreply@github.com>2022-12-20 20:26:32 +0100
commit0aec095b261bed8b5841beba7ce8cd52de4d54be (patch)
tree8d30b9ab02f81d400850edc22b9191f39affba6e /lib/std/envvars.nim
parent40b5c4c4c340d44ee724183306716286e40002cb (diff)
downloadNim-0aec095b261bed8b5841beba7ce8cd52de4d54be.tar.gz
fixes #19292; fixes #21122; fixes putEnv and setEnv with vcc (#21143)
* fixes #19292; fixes 21122; fixes putEnv and setEnv with vcc

* add a test
Diffstat (limited to 'lib/std/envvars.nim')
-rw-r--r--lib/std/envvars.nim8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/std/envvars.nim b/lib/std/envvars.nim
index 817a155ec..ce90f66ba 100644
--- a/lib/std/envvars.nim
+++ b/lib/std/envvars.nim
@@ -63,9 +63,13 @@ when not defined(nimscript):
       import winlean
       when defined(nimPreviewSlimSystem):
         import std/widestrs
-      proc c_wgetenv(varname: WideCString): WideCString {.importc: "_wgetenv",
+
+      type wchar_t {.importc: "wchar_t", header: "<stdlib.h>".} = int16
+      proc c_wgetenv(varname: ptr wchar_t): ptr wchar_t {.importc: "_wgetenv",
           header: "<stdlib.h>".}
-      proc getEnvImpl(env: cstring): WideCString = c_wgetenv(env.newWideCString)
+      proc getEnvImpl(env: cstring): WideCString =
+        let r: WideCString = env.newWideCString
+        cast[WideCString](c_wgetenv(cast[ptr wchar_t](r)))
     else:
       proc c_getenv(env: cstring): cstring {.
         importc: "getenv", header: "<stdlib.h>".}