Author: Ronan Lamy <ronan.l...@gmail.com>
Branch: 
Changeset: r81362:d1769628ff5d
Date: 2015-12-16 16:21 +0000
http://bitbucket.org/pypy/pypy/changeset/d1769628ff5d/

Log:    Add explicit casts to untranslated make_stat_result() and
        make_statvfs_result()

diff --git a/rpython/rlib/rposix_stat.py b/rpython/rlib/rposix_stat.py
--- a/rpython/rlib/rposix_stat.py
+++ b/rpython/rlib/rposix_stat.py
@@ -169,10 +169,12 @@
 
 def make_stat_result(tup):
     """Turn a tuple into an os.stat_result object."""
-    positional = tup[:N_INDEXABLE_FIELDS]
+    positional = tuple(
+        lltype.cast_primitive(TYPE, value) for value, (name, TYPE) in
+            zip(tup, STAT_FIELDS)[:N_INDEXABLE_FIELDS])
     kwds = {}
-    for i, name in enumerate(STAT_FIELD_NAMES[N_INDEXABLE_FIELDS:]):
-        kwds[name] = tup[N_INDEXABLE_FIELDS + i]
+    for value, (name, TYPE) in zip(tup, STAT_FIELDS)[N_INDEXABLE_FIELDS:]:
+        kwds[name] = lltype.cast_primitive(TYPE, value)
     return os.stat_result(positional, kwds)
 
 
@@ -221,8 +223,6 @@
 class StatvfsResultRepr(Repr):
     def __init__(self, rtyper):
         self.rtyper = rtyper
-        self.statvfs_fields = STATVFS_FIELDS
-
         self.statvfs_field_indexes = {}
         for i, (name, TYPE) in enumerate(STATVFS_FIELDS):
             self.statvfs_field_indexes[name] = i
@@ -261,10 +261,11 @@
         return r_sta.redispatch_getfield(hop, index)
 
 
-
 def make_statvfs_result(tup):
-    return os.statvfs_result(tup)
-
+    args = tuple(
+        lltype.cast_primitive(TYPE, value) for value, (name, TYPE) in
+            zip(tup, STATVFS_FIELDS))
+    return os.statvfs_result(args)
 
 class MakeStatvfsResultEntry(extregistry.ExtRegistryEntry):
     _about_ = make_statvfs_result
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to