mirror of
https://github.com/python/cpython
synced 2026-09-29 07:45:29 +03:00
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:
parent
904de5b734
commit
a7befda8d8
4 changed files with 39 additions and 6 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue