From b3634319a452122b879d6a9f11b3576e75ec462d Mon Sep 17 00:00:00 2001 From: Brandyn White Date: Fri, 21 Jan 2011 12:12:30 -0500 Subject: [PATCH 1/3] Added error check in longlong handeling (only one error can occur there, assumes it is overflow for speed). It clears the error and falls back to Pickle. Signed-off-by: Brandyn A. White --- fastb.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fastb.c b/fastb.c index 9fe54af..1e63325 100644 --- a/fastb.c +++ b/fastb.c @@ -235,9 +235,10 @@ _fastb_read_pyobj_long(FILE *stream, PyObject *fallback) { static int _fastb_write_pyobj_long(FILE *stream, PyObject *pyobj, PyObject *fallback) { long long l = PyLong_AsLongLong(pyobj); - if (-9223372036854775807LL <= l && l <= 9223372036854775807LL) { + if (!PyErr_Occurred() && -9223372036854775807LL <= l && l <= 9223372036854775807LL) { return _fastb_write_long(stream, l); } else { + PyErr_Clear(); return _fastb_write_pyobj_fallback(stream, pyobj, fallback); } } From 3eacc714c5c6d14830580b3e8ba840636ee8824c Mon Sep 17 00:00:00 2001 From: Brandyn White Date: Fri, 21 Jan 2011 12:17:03 -0500 Subject: [PATCH 2/3] Corrected lower end of the integer checks (lowest possible value was being missed) should be [-2**31, 2**31-1] and [-2**63, 2**63-1] was [-2**31+1, 2**31-1] and [-2**63+1, 2**63-1] Signed-off-by: Brandyn A. White --- fastb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fastb.c b/fastb.c index 1e63325..030deaf 100644 --- a/fastb.c +++ b/fastb.c @@ -220,7 +220,7 @@ _fastb_read_pyobj_int(FILE *stream, PyObject *fallback) { static int _fastb_write_pyobj_int(FILE *stream, PyObject *pyobj, PyObject *fallback) { long l = PyInt_AS_LONG(pyobj); - if (-2147483647L <= l && l <= 2147483647L) { + if (-2147483648L <= l && l <= 2147483647L) { return _fastb_write_int(stream, l); } else { return _fastb_write_long(stream, l); @@ -235,7 +235,7 @@ _fastb_read_pyobj_long(FILE *stream, PyObject *fallback) { static int _fastb_write_pyobj_long(FILE *stream, PyObject *pyobj, PyObject *fallback) { long long l = PyLong_AsLongLong(pyobj); - if (!PyErr_Occurred() && -9223372036854775807LL <= l && l <= 9223372036854775807LL) { + if (!PyErr_Occurred() && -9223372036854775808LL <= l && l <= 9223372036854775807LL) { return _fastb_write_long(stream, l); } else { PyErr_Clear(); From b97406bdeb7185ae39cc155cf45e5f1b8f6f5005 Mon Sep 17 00:00:00 2001 From: Brandyn White Date: Fri, 21 Jan 2011 12:30:11 -0500 Subject: [PATCH 3/3] Version bump Signed-off-by: Brandyn A. White --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 8fd0769..78dc91a 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, Extension setup(name='ctypedbytes', - version='0.1.7', + version='0.1.8', description='A fast Python module for dealing with so called "typed bytes"', author='Klaas Bosteels', author_email='klaas@last.fm',