Mercurial > hg
changeset 6880:892806b3fc0f
util: disinfect lookup_reg strings (issue1126)
lookup_reg could return Unicode strings, which would infect other strings and
generate unexpected tracebacks. Spotted by Rémy Roy.
Fold in silly nested function while we're at it.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 10 Aug 2008 22:55:00 -0500 |
parents | 24fd94ed1cc0 |
children | d2375bbee6d4 |
files | mercurial/util_win32.py |
diffstat | 1 files changed, 6 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/util_win32.py Thu Jul 31 22:41:19 2008 +0300 +++ b/mercurial/util_win32.py Sun Aug 10 22:55:00 2008 -0500 @@ -201,21 +201,17 @@ except ImportError: return None - def query_val(scope, key, valname): - try: - keyhandle = OpenKey(scope, key) - return QueryValueEx(keyhandle, valname)[0] - except EnvironmentError: - return None - if scope is None: scope = (HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE) elif not isinstance(scope, (list, tuple)): scope = (scope,) for s in scope: - val = query_val(s, key, valname) - if val is not None: - return val + try: + val = QueryValueEx(OpenKey(scope, key), valname)[0] + # never let a Unicode string escape into the wild + return util.tolocal(val.encode('UTF-8')) + except EnvironmentError: + pass def system_rcpath_win32(): '''return default os-specific hgrc search path'''