Author: Brian Kearns <[email protected]>
Branch:
Changeset: r69009:0ba3660ac64a
Date: 2014-01-29 18:24 -0500
http://bitbucket.org/pypy/pypy/changeset/0ba3660ac64a/
Log: merge heads
diff --git a/rpython/rlib/rstruct/nativefmttable.py
b/rpython/rlib/rstruct/nativefmttable.py
--- a/rpython/rlib/rstruct/nativefmttable.py
+++ b/rpython/rlib/rstruct/nativefmttable.py
@@ -142,7 +142,7 @@
pack = std.pack_bool
unpack = std.unpack_bool
else:
- pack = std.make_int_packer(size, signed, True)
+ pack = std.make_int_packer(size, signed)
unpack = std.make_int_unpacker(size, signed)
native_fmttable[fmtchar] = {'size': size,
diff --git a/rpython/rlib/rstruct/standardfmttable.py
b/rpython/rlib/rstruct/standardfmttable.py
--- a/rpython/rlib/rstruct/standardfmttable.py
+++ b/rpython/rlib/rstruct/standardfmttable.py
@@ -13,13 +13,6 @@
from rpython.rlib.rstruct.error import StructError, StructOverflowError
from rpython.rlib.unroll import unrolling_iterable
-# In the CPython struct module, pack() unconsistently accepts inputs
-# that are out-of-range or floats instead of ints. Should we emulate
-# this? Let's use a flag for now:
-
-PACK_ACCEPTS_BROKEN_INPUT = True
-
-# ____________________________________________________________
def pack_pad(fmtiter, count):
fmtiter.result.append_multiple_char('\x00', count)
@@ -99,12 +92,8 @@
max = r_ulonglong(max)
return min, max, accept_method
-def make_int_packer(size, signed, cpython_checks_range, _memo={}):
- if cpython_checks_range:
- check_range = True
- else:
- check_range = not PACK_ACCEPTS_BROKEN_INPUT
- key = (size, signed, check_range)
+def make_int_packer(size, signed, _memo={}):
+ key = size, signed
try:
return _memo[key]
except KeyError:
@@ -121,9 +110,8 @@
def pack_int(fmtiter):
method = getattr(fmtiter, accept_method)
value = method()
- if check_range:
- if value < min or value > max:
- raise StructError(errormsg)
+ if not min <= value <= max:
+ raise StructError(errormsg)
if fmtiter.bigendian:
for i in unroll_revrange_size:
x = (value >> (8*i)) & 0xff
@@ -237,8 +225,8 @@
for c, size in [('b', 1), ('h', 2), ('i', 4), ('l', 4), ('q', 8)]:
standard_fmttable[c] = {'size': size,
- 'pack': make_int_packer(size, True, True),
+ 'pack': make_int_packer(size, True),
'unpack': make_int_unpacker(size, True)}
standard_fmttable[c.upper()] = {'size': size,
- 'pack': make_int_packer(size, False, True),
+ 'pack': make_int_packer(size, False),
'unpack': make_int_unpacker(size, False)}
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit