Commit a8dae6c3 authored by Jim Fulton's avatar Jim Fulton

Merge pull request #6 from zopefoundation/fix-p3-32bit

Fix p3 32bit
parents 53b90d99 11a51d2a
......@@ -19,9 +19,10 @@
#define KEY_CHECK INT_CHECK
#define COPY_KEY_TO_OBJECT(O, K) O=INT_FROM_LONG(K)
#define COPY_KEY_FROM_ARG(TARGET, ARG, STATUS) \
if (INT_CHECK(ARG)) { \
long vcopy = INT_AS_LONG(ARG); \
if ((int)vcopy != vcopy) { \
if (INT_CHECK(ARG)) { \
long vcopy = INT_AS_LONG(ARG); \
if (PyErr_Occurred()) { (STATUS)=0; (TARGET)=0; } \
else if ((int)vcopy != vcopy) { \
PyErr_SetString(PyExc_TypeError, "integer out of range"); \
(STATUS)=0; (TARGET)=0; \
} \
......
......@@ -23,7 +23,8 @@
#define COPY_VALUE_FROM_ARG(TARGET, ARG, STATUS) \
if (INT_CHECK(ARG)) { \
long vcopy = INT_AS_LONG(ARG); \
if ((int)vcopy != vcopy) { \
if (PyErr_Occurred()) { (STATUS)=0; (TARGET)=0; } \
else if ((int)vcopy != vcopy) { \
PyErr_SetString(PyExc_TypeError, "integer out of range"); \
(STATUS)=0; (TARGET)=0; \
} \
......
......@@ -11,8 +11,11 @@
# FOR A PARTICULAR PURPOSE
#
##############################################################################
import sys
import unittest
python3 = sys.version_info >= (3, )
from BTrees.tests.common import permutations
......@@ -450,9 +453,13 @@ class FamilyTest(unittest.TestCase):
# this next bit illustrates an, um, "interesting feature". If
# the characteristics change to match the 64 bit version, please
# feel free to change.
big = BTrees.family32.maxint + 1
self.assertRaises(TypeError, s.insert, big)
self.assertRaises(TypeError, s.insert, BTrees.family32.minint - 1)
try: s.insert(BTrees.family32.maxint + 1)
except (TypeError, OverflowError): pass
else: self.assert_(False)
try: s.insert(BTrees.family32.minint - 1)
except (TypeError, OverflowError): pass
else: self.assert_(False)
self.check_pickling(BTrees.family32)
def test64(self):
......
......@@ -113,6 +113,8 @@ class _IIBTreeTestBase(BTreeTests):
i = int(i)
try:
b[i] = 0
except OverflowError:
self.assertRaises(OverflowError, b.__setitem__, 0, i)
except TypeError:
self.assertRaises(TypeError, b.__setitem__, 0, i)
else:
......
``BTrees`` Changelog
====================
- Fixed: integer overflow on 32-bit machines wasn't detected correctly
under Python 3.
4.0.9 (unreleased)
------------------
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment