[Zodb-checkins] CVS: Zope/lib/python/BTrees - BucketTemplate.c:1.19
Andreas Jung
andreas@zope.com
Fri, 19 Oct 2001 14:55:11 -0400
Update of /cvs-repository/Zope/lib/python/BTrees
In directory cvs.zope.org:/tmp/cvs-serv5831
Modified Files:
BucketTemplate.c
Log Message:
PyObject_Compare() in bucket_get() did not check for raised
exceptions (this error occured when trying to access an
OOBTree with a string with non-ascii encoding e.g. latin1.
In this case Python raises a Unicode exception that has not
been caught and not propagated to the application.
=== Zope/lib/python/BTrees/BucketTemplate.c 1.18 => 1.19 ===
** Returns: object matching object or 0/1 object
*/
+
+
static PyObject *
_bucket_get(Bucket *self, PyObject *keyarg, int has_key)
{
@@ -110,6 +112,8 @@
for (min=0, max=self->len, i=max/2, l=max; i != l; l=i, i=(min+max)/2)
{
cmp=TEST_KEY(self->keys[i], key);
+ if (PyErr_Occurred()) goto err;
+
if (cmp < 0) min=i;
else if (cmp == 0)
{
@@ -129,6 +133,8 @@
PER_ACCESSED(self);
if (has_key) return PyInt_FromLong(0);
PyErr_SetObject(PyExc_KeyError, keyarg);
+
+err:
return NULL;
}