diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-06-16 18:16:33 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2016-06-16 18:16:33 +0300 |
commit | d0416ff9158de23df9b916801ec3d27d85403c00 (patch) | |
tree | 841d3607f3cca9adb6d0bf1c779c47747b00c010 | |
parent | 1babeb47a4b68ee2a02a3493a871c0484055538c (diff) |
extmod/modbtree: Actually implement end key support for .items().
-rw-r--r-- | extmod/modbtree.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/extmod/modbtree.c b/extmod/modbtree.c index 181f5d717..cdcfe6619 100644 --- a/extmod/modbtree.c +++ b/extmod/modbtree.c @@ -153,6 +153,16 @@ STATIC mp_obj_t btree_iternext(mp_obj_t self_in) { } CHECK_ERROR(res); + if (self->end_key != mp_const_none) { + DBT end_key; + end_key.data = (void*)mp_obj_str_get_data(self->end_key, &end_key.size); + BTREE *t = self->db->internal; + if (t->bt_cmp(&key, &end_key) >= 0) { + self->end_key = MP_OBJ_NULL; + return MP_OBJ_STOP_ITERATION; + } + } + mp_obj_tuple_t *pair = mp_obj_new_tuple(2, NULL); pair->items[0] = mp_obj_new_bytes(key.data, key.size); pair->items[1] = mp_obj_new_bytes(val.data, val.size); |