windows: open registry keys using unicode names
authorMatt Harbison <matt_harbison@yahoo.com>
Thu, 13 Sep 2018 20:54:53 -0400
changeset 39643 47ac5d93d708
parent 39642 a407f9009392
child 39644 3b421154d2ca
windows: open registry keys using unicode names Python3 complained it must be str. While here, use a context manager to close the key- it wouldn't wrap at 80 characters the old way, and would have had to move anyway.
mercurial/windows.py
--- a/mercurial/windows.py	Thu Sep 13 00:39:02 2018 -0400
+++ b/mercurial/windows.py	Thu Sep 13 20:54:53 2018 -0400
@@ -554,9 +554,10 @@
         scope = (scope,)
     for s in scope:
         try:
-            val = winreg.QueryValueEx(winreg.OpenKey(s, key), valname)[0]
-            # never let a Unicode string escape into the wild
-            return encoding.unitolocal(val)
+            with winreg.OpenKey(s, encoding.strfromlocal(key)) as hkey:
+                val = winreg.QueryValueEx(hkey, valname)[0]
+                # never let a Unicode string escape into the wild
+                return encoding.unitolocal(val)
         except EnvironmentError:
             pass