# HG changeset patch # User Matt Harbison # Date 2022-06-13 15:06:33 # Node ID 709e5f7eec1fa81d9280b2ee68fec336284e25a9 # Parent ce50d95cfa57957e472f05572327f47c5f947ac0 windows: prevent bytes from being passed to registry APIs There was a TortoiseHg bug report in this area[1], and from inspection, it looks like passing `b""` as `valname` would fail to convert to unicode. The underlying API allows both `""` and `NULL` to return the default value for the key. [1] https://foss.heptapod.net/mercurial/tortoisehg/thg/-/issues/5803 diff --git a/mercurial/windows.py b/mercurial/windows.py --- a/mercurial/windows.py +++ b/mercurial/windows.py @@ -680,7 +680,9 @@ def lookupreg(key, valname=None, scope=N # pytype: disable=module-attr with winreg.OpenKey(s, encoding.strfromlocal(key)) as hkey: # pytype: enable=module-attr - name = valname and encoding.strfromlocal(valname) or valname + name = None + if valname is not None: + name = encoding.strfromlocal(valname) # pytype: disable=module-attr val = winreg.QueryValueEx(hkey, name)[0] # pytype: enable=module-attr