Fixes SF bug # 778421

* Fixed a bug in the compatibility interface set_location() method
   where it would not properly search to the next nearest key when
   used on BTree databases.  [SF bug id 788421]
 * Fixed a bug in the compatibility interface set_location() method
   where it could crash when looking up keys in a hash or recno
   format database due to an incorrect free().
This commit is contained in:
Gregory P. Smith 2004-02-26 10:07:14 +00:00
parent 904de5b734
commit a7befda8d8
4 changed files with 39 additions and 6 deletions

View file

@ -97,7 +97,7 @@
#error "eek! DBVER can't handle minor versions > 9"
#endif
#define PY_BSDDB_VERSION "4.2.4"
#define PY_BSDDB_VERSION "4.2.5"
static char *rcs_id = "$Id$";
@ -2940,7 +2940,15 @@ DBC_set_range(DBCursorObject* self, PyObject* args, PyObject* kwargs)
data.data, data.size);
break;
}
FREE_DBT(key);
if (_DB_get_type(self->mydb) == DB_BTREE) {
/* the only time a malloced key is returned is when we
* call this on a BTree database because it performs
* partial matching and needs to return the real key.
* All others leave key untouched [where calling free()
* on it would often segfault].
*/
FREE_DBT(key);
}
FREE_DBT(data);
}