[pypy-commit] pypy default: SetValueEx(REG_DWORD): support None and longs.

arigo noreply at buildbot.pypy.org
Sun Sep 28 09:10:36 CEST 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r73734:2962561471e0
Date: 2014-09-28 09:10 +0200
http://bitbucket.org/pypy/pypy/changeset/2962561471e0/

Log:	SetValueEx(REG_DWORD): support None and longs.

diff --git a/pypy/module/_winreg/interp_winreg.py b/pypy/module/_winreg/interp_winreg.py
--- a/pypy/module/_winreg/interp_winreg.py
+++ b/pypy/module/_winreg/interp_winreg.py
@@ -266,10 +266,16 @@
     buf = None
 
     if typ == rwinreg.REG_DWORD:
-        if space.isinstance_w(w_value, space.w_int):
+        if space.is_none(w_value) or (
+                space.isinstance_w(w_value, space.w_int) or
+                space.isinstance_w(w_value, space.w_long)):
+            if space.is_none(w_value):
+                value = r_uint(0)
+            else:
+                value = space.c_uint_w(w_value)
             buflen = rffi.sizeof(rwin32.DWORD)
             buf1 = lltype.malloc(rffi.CArray(rwin32.DWORD), 1, flavor='raw')
-            buf1[0] = space.uint_w(w_value)
+            buf1[0] = value
             buf = rffi.cast(rffi.CCHARP, buf1)
 
     elif typ == rwinreg.REG_SZ or typ == rwinreg.REG_EXPAND_SZ:


More information about the pypy-commit mailing list