summary refs log tree commit diff stats
path: root/lib/windows/registry.nim
diff options
context:
space:
mode:
Diffstat (limited to 'lib/windows/registry.nim')
-rw-r--r--lib/windows/registry.nim18
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/windows/registry.nim b/lib/windows/registry.nim
index c17f2f455..ab7d0b1fe 100644
--- a/lib/windows/registry.nim
+++ b/lib/windows/registry.nim
@@ -54,16 +54,18 @@ proc getUnicodeValue*(path, key: string; handle: HKEY): string =
     var newHandle: HKEY
     call regOpenKeyEx(handle, hh, 0, KEY_READ or KEY_WOW64_64KEY, newHandle)
     call regGetValue(newHandle, nil, kk, flags, nil, nil, addr bufsize)
-    var res = newWideCString("", bufsize)
-    call regGetValue(newHandle, nil, kk, flags, nil, cast[pointer](res),
-                   addr bufsize)
-    result = res $ bufsize
+    if bufSize > 0:
+      var res = newWideCString(bufsize)
+      call regGetValue(newHandle, nil, kk, flags, nil, addr res[0],
+                    addr bufsize)
+      result = res $ bufsize
     call regCloseKey(newHandle)
   else:
-    var res = newWideCString("", bufsize)
-    call regGetValue(handle, hh, kk, flags, nil, cast[pointer](res),
-                   addr bufsize)
-    result = res $ bufsize
+    if bufSize > 0:
+      var res = newWideCString(bufsize)
+      call regGetValue(handle, hh, kk, flags, nil, addr res[0],
+                    addr bufsize)
+      result = res $ bufsize
 
 proc regSetValue(key: HKEY, lpSubKey, lpValueName: WideCString,
                  dwType: int32; lpData: WideCString; cbData: int32): int32 {.