1381 static PyObject *
1382 BTree_maxminKey(BTree *self, PyObject *args, int min)
1383 {
when considering value == (signed char)2 from src/BTrees/BTreeTemplate.c:1444
taking True path
1384 PyObject *key=0;
1385 Bucket *bucket = NULL;
1386 int offset, rc;
1387 int empty_tree = 1;
1388
1389 UNLESS (PyArg_ParseTuple(args, "|O", &key)) return NULL;
when PyArg_ParseTuple() succeeds
taking False path
1390
1391 UNLESS (PER_USE(self)) return NULL;
when considering range: -128 <= value <= -2
taking True path
when considering range: -128 <= value <= -1
taking False path
taking False path
1392
1393 UNLESS (self->data && self->len) goto empty;
when treating unknown struct BTreeItem * from src/BTrees/BTreeTemplate.c:1393 as non-NULL
taking False path
when considering range: -0x80000000 <= value <= -1
taking False path
1394
1395 /* Find the range */
1396
1397 if (key)
taking True path
1398 {
1399 if ((rc = BTree_findRangeEnd(self, key, min, 0, &bucket, &offset)) <= 0)
when considering range: -0x80000000 <= value <= 0
taking True path
1400 {
1401 if (rc < 0) goto err;
when considering range: -0x80000000 <= value <= -1
taking True path
1402 empty_tree = 0;
1403 goto empty;
1404 }
1405 PER_UNUSE(self);
1406 UNLESS (PER_USE(bucket))
1407 {
1408 Py_DECREF(bucket);
1409 return NULL;
1410 }
1411 }
1412 else if (min)
1413 {
1414 bucket = self->firstbucket;
1415 PER_UNUSE(self);
1416 PER_USE_OR_RETURN(bucket, NULL);
1417 Py_INCREF(bucket);
1418 offset = 0;
1419 }
1420 else
1421 {
1422 bucket = BTree_lastBucket(self);
1423 PER_UNUSE(self);
1424 UNLESS (PER_USE(bucket))
1425 {
1426 Py_DECREF(bucket);
1427 return NULL;
1428 }
1429 assert(bucket->len);
1430 offset = bucket->len - 1;
1431 }
1432
1433 COPY_KEY_TO_OBJECT(key, bucket->keys[offset]);
1434 PER_UNUSE(bucket);
1435 Py_DECREF(bucket);
1436
1437 return key;
1438
1439 empty:
1440 PyErr_SetString(PyExc_ValueError,
1441 empty_tree ? "empty tree" :
1442 "no key satisfies the conditions");
1443 err:
1444 PER_UNUSE(self);
when treating unknown struct cPersistenceCAPIstruct * from src/persistent/cPersistence.h:112 as non-NULL
calling unknown void (*) (struct cPersistentObject *) from src/BTrees/BTreeTemplate.c:1444
1445 if (bucket)
when treating unknown struct Bucket * * from src/BTrees/BTreeTemplate.c:1399 as non-NULL
taking True path
when considering range: -128 <= value <= 1
taking False path
1446 {
1447 PER_UNUSE(bucket);
calling unknown void (*) (struct cPersistentObject *) from src/BTrees/BTreeTemplate.c:1447
1448 Py_DECREF(bucket);
when considering range: -0x8000000000000000 <= value <= -1
taking True path
1449 }
1450 return NULL;
1451 }
returning (PyObject*)NULL without setting an exception
found 18 similar trace(s) to this