From 865584dd0c5b34530e44f03d4b42349a83cbca47 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 28 Jan 2018 02:59:44 +0100 Subject: win: os_getenv(): use _wgetenv() --- src/nvim/os/env.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src') diff --git a/src/nvim/os/env.c b/src/nvim/os/env.c index 6cf48eb814..4f14e4eee3 100644 --- a/src/nvim/os/env.c +++ b/src/nvim/os/env.c @@ -36,8 +36,25 @@ const char *os_getenv(const char *name) FUNC_ATTR_NONNULL_ALL { +#if !defined(WIN32) const char *e = getenv(name); return e == NULL || *e == NUL ? NULL : e; +#else + wchar_t *wname; + utf8_to_utf16(name, &wname); + if (wname == NULL) { + xfree(wname); + return NULL; + } + wchar_t *wvalue = _wgetenv(wname); + char *value; + int rv = utf16_to_utf8(wvalue, &value); + if (rv != 0 || *value == NUL) { + xfree(value); + return NULL; + } + return value; // TODO(jmk): this was allocated, but callers don't free it ... +#endif } /// Returns `true` if the environment variable, `name`, has been defined -- cgit