[pypy-svn] r62038 - pypy/trunk/pypy/module/_winreg

afa at codespeak.net afa at codespeak.net
Fri Feb 20 01:01:53 CET 2009


Author: afa
Date: Fri Feb 20 01:01:49 2009
New Revision: 62038

Modified:
   pypy/trunk/pypy/module/_winreg/interp_winreg.py
Log:
fix annotation by returning a wrapped object in every case


Modified: pypy/trunk/pypy/module/_winreg/interp_winreg.py
==============================================================================
--- pypy/trunk/pypy/module/_winreg/interp_winreg.py	(original)
+++ pypy/trunk/pypy/module/_winreg/interp_winreg.py	Fri Feb 20 01:01:49 2009
@@ -327,20 +327,22 @@
     errstring = space.wrap("Could not convert the data to the specified type")
     raise OperationError(space.w_ValueError, errstring)
 
-def convert_from_regdata(buf, buflen, typ):
+def convert_from_regdata(space, buf, buflen, typ):
     if typ == rwinreg.REG_DWORD:
         if not buflen:
-            return 0
-        return rffi.cast(rwin32.LPDWORD, buf)[0]
+            return space.wrap(0)
+        d = rffi.cast(rwin32.LPDWORD, buf)[0]
+        return space.wrap(d)
 
     elif typ == rwinreg.REG_SZ or typ == rwinreg.REG_EXPAND_SZ:
         if not buflen:
-            return u""
-        return rffi.charp2strn(rffi.cast(rffi.CCHARP, buf), buflen)
+            return space.wrap("")
+        s = rffi.charp2strn(rffi.cast(rffi.CCHARP, buf), buflen)
+        return space.wrap(s)
 
     elif typ == rwinreg.REG_MULTI_SZ:
         if not buflen:
-            return []
+            return space.wrap([])
         i = 0
         l = []
         while i < buflen and buf[i]:
@@ -352,10 +354,10 @@
                 break
             l.append(''.join(s))
             i += 1
-        return l
+        return space.wrap(l)
 
     else: # REG_BINARY and all other types
-        return rffi.charpsize2str(buf, buflen)
+        return space.wrap(rffi.charpsize2str(buf, buflen))
 
 def SetValueEx(space, w_hkey, value_name, w_reserved, typ, w_value):
     """SetValueEx(key, value_name, reserved, type, value) - Stores data in the value field of an open registry key.
@@ -421,9 +423,8 @@
                 if ret != 0:
                     raiseWindowsError(space, ret, 'RegQueryValueEx')
                 return space.newtuple([
-                    space.wrap(convert_from_regdata(databuf,
-                                                    retDataSize[0],
-                                                    retType[0])),
+                    convert_from_regdata(space, databuf,
+                                         retDataSize[0], retType[0]),
                     space.wrap(retType[0]),
                     ])
             finally:
@@ -556,9 +557,8 @@
 
                         return space.newtuple([
                             space.wrap(rffi.charp2str(valuebuf)),
-                            space.wrap(convert_from_regdata(databuf,
-                                                            retDataSize[0],
-                                                            retType[0])),
+                            convert_from_regdata(space, databuf,
+                                                 retDataSize[0], retType[0]),
                             space.wrap(retType[0]),
                             ])
                     finally:



More information about the Pypy-commit mailing list