Skip to content

Commit

Permalink
update from master
Browse files Browse the repository at this point in the history
  • Loading branch information
freddrake committed Oct 8, 2014
2 parents 88c1dce + a8dae6c commit 3d07a66
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 7 deletions.
7 changes: 4 additions & 3 deletions BTrees/intkeymacros.h
Expand Up @@ -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; \
} \
Expand Down
3 changes: 2 additions & 1 deletion BTrees/intvaluemacros.h
Expand Up @@ -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; \
} \
Expand Down
13 changes: 10 additions & 3 deletions BTrees/tests/testBTrees.py
Expand Up @@ -11,8 +11,11 @@
# FOR A PARTICULAR PURPOSE
#
##############################################################################
import sys
import unittest

python3 = sys.version_info >= (3, )

from BTrees.tests.common import permutations


Expand Down Expand Up @@ -450,9 +453,13 @@ def test32(self):
# 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):
Expand Down
2 changes: 2 additions & 0 deletions BTrees/tests/test_IIBTree.py
Expand Up @@ -113,6 +113,8 @@ def trial(i):
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:
Expand Down
7 changes: 7 additions & 0 deletions CHANGES.rst
Expand Up @@ -4,6 +4,13 @@
- BTree subclasses can define max_leaf_size or max_internal_size to
control maximum sizes for Bucket/Set and BTree/TreeSet nodes.

- Fixed: integer overflow on 32-bit machines wasn't detected correctly
under Python 3.


4.0.9 (unreleased)
------------------

- Added support for Python 3.4.

- Update pure-Python and C trees / sets to accept explicit None to indicate
Expand Down

0 comments on commit 3d07a66

Please sign in to comment.