Skip to content
This repository was archived by the owner on Oct 28, 2023. It is now read-only.

Commit 417dc0c

Browse files
committed
extmod/modbtree: Fixes for nanbox build.
1 parent 43241ce commit 417dc0c

File tree

1 file changed

+38
-16
lines changed

1 file changed

+38
-16
lines changed

extmod/modbtree.c

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -89,16 +89,23 @@ STATIC mp_obj_t btree_put(size_t n_args, const mp_obj_t *args) {
8989
(void)n_args;
9090
mp_obj_btree_t *self = MP_OBJ_TO_PTR(args[0]);
9191
DBT key, val;
92-
key.data = (void*)mp_obj_str_get_data(args[1], &key.size);
93-
val.data = (void*)mp_obj_str_get_data(args[2], &val.size);
92+
// Different ports may have different type sizes
93+
mp_uint_t v;
94+
key.data = (void*)mp_obj_str_get_data(args[1], &v);
95+
key.size = v;
96+
val.data = (void*)mp_obj_str_get_data(args[2], &v);
97+
val.size = v;
9498
return MP_OBJ_NEW_SMALL_INT(__bt_put(self->db, &key, &val, 0));
9599
}
96100
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(btree_put_obj, 3, 4, btree_put);
97101

98102
STATIC mp_obj_t btree_get(size_t n_args, const mp_obj_t *args) {
99103
mp_obj_btree_t *self = MP_OBJ_TO_PTR(args[0]);
100104
DBT key, val;
101-
key.data = (void*)mp_obj_str_get_data(args[1], &key.size);
105+
// Different ports may have different type sizes
106+
mp_uint_t v;
107+
key.data = (void*)mp_obj_str_get_data(args[1], &v);
108+
key.size = v;
102109
int res = __bt_get(self->db, &key, &val, 0);
103110
if (res == RET_SPECIAL) {
104111
if (n_args > 2) {
@@ -117,18 +124,22 @@ STATIC mp_obj_t btree_seq(size_t n_args, const mp_obj_t *args) {
117124
int flags = MP_OBJ_SMALL_INT_VALUE(args[1]);
118125
DBT key, val;
119126
if (n_args > 2) {
120-
key.data = (void*)mp_obj_str_get_data(args[2], &key.size);
127+
// Different ports may have different type sizes
128+
mp_uint_t v;
129+
key.data = (void*)mp_obj_str_get_data(args[2], &v);
130+
key.size = v;
121131
}
122132

123133
int res = __bt_seq(self->db, &key, &val, flags);
124134
if (res == RET_SPECIAL) {
125135
return mp_const_none;
126136
}
127137

128-
mp_obj_tuple_t *pair = mp_obj_new_tuple(2, NULL);
138+
mp_obj_t pair_o = mp_obj_new_tuple(2, NULL);
139+
mp_obj_tuple_t *pair = MP_OBJ_TO_PTR(pair_o);
129140
pair->items[0] = mp_obj_new_bytes(key.data, key.size);
130141
pair->items[1] = mp_obj_new_bytes(val.data, val.size);
131-
return pair;
142+
return pair_o;
132143
}
133144
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(btree_seq_obj, 2, 4, btree_seq);
134145

@@ -185,11 +196,14 @@ STATIC mp_obj_t btree_iternext(mp_obj_t self_in) {
185196
mp_obj_btree_t *self = MP_OBJ_TO_PTR(self_in);
186197
DBT key, val;
187198
int res;
199+
// Different ports may have different type sizes
200+
mp_uint_t v;
188201
bool desc = self->flags & FLAG_DESC;
189202
if (self->start_key != MP_OBJ_NULL) {
190203
int flags = R_FIRST;
191204
if (self->start_key != mp_const_none) {
192-
key.data = (void*)mp_obj_str_get_data(self->start_key, &key.size);
205+
key.data = (void*)mp_obj_str_get_data(self->start_key, &v);
206+
key.size = v;
193207
flags = R_CURSOR;
194208
} else if (desc) {
195209
flags = R_LAST;
@@ -207,7 +221,8 @@ STATIC mp_obj_t btree_iternext(mp_obj_t self_in) {
207221

208222
if (self->end_key != mp_const_none) {
209223
DBT end_key;
210-
end_key.data = (void*)mp_obj_str_get_data(self->end_key, &end_key.size);
224+
end_key.data = (void*)mp_obj_str_get_data(self->end_key, &v);
225+
end_key.size = v;
211226
BTREE *t = self->db->internal;
212227
int cmp = t->bt_cmp(&key, &end_key);
213228
if (desc) {
@@ -228,20 +243,24 @@ STATIC mp_obj_t btree_iternext(mp_obj_t self_in) {
228243
case FLAG_ITER_VALUES:
229244
return mp_obj_new_bytes(val.data, val.size);
230245
default: {
231-
mp_obj_tuple_t *pair = mp_obj_new_tuple(2, NULL);
246+
mp_obj_t pair_o = mp_obj_new_tuple(2, NULL);
247+
mp_obj_tuple_t *pair = MP_OBJ_TO_PTR(pair_o);
232248
pair->items[0] = mp_obj_new_bytes(key.data, key.size);
233249
pair->items[1] = mp_obj_new_bytes(val.data, val.size);
234-
return pair;
250+
return pair_o;
235251
}
236252
}
237253
}
238254

239255
STATIC mp_obj_t btree_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
240256
mp_obj_btree_t *self = MP_OBJ_TO_PTR(self_in);
257+
// Different ports may have different type sizes
258+
mp_uint_t v;
241259
if (value == MP_OBJ_NULL) {
242260
// delete
243261
DBT key;
244-
key.data = (void*)mp_obj_str_get_data(index, &key.size);
262+
key.data = (void*)mp_obj_str_get_data(index, &v);
263+
key.size = v;
245264
int res = __bt_delete(self->db, &key, 0);
246265
if (res == RET_SPECIAL) {
247266
nlr_raise(mp_obj_new_exception(&mp_type_KeyError));
@@ -251,7 +270,8 @@ STATIC mp_obj_t btree_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
251270
} else if (value == MP_OBJ_SENTINEL) {
252271
// load
253272
DBT key, val;
254-
key.data = (void*)mp_obj_str_get_data(index, &key.size);
273+
key.data = (void*)mp_obj_str_get_data(index, &v);
274+
key.size = v;
255275
int res = __bt_get(self->db, &key, &val, 0);
256276
if (res == RET_SPECIAL) {
257277
nlr_raise(mp_obj_new_exception(&mp_type_KeyError));
@@ -261,8 +281,10 @@ STATIC mp_obj_t btree_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t value) {
261281
} else {
262282
// store
263283
DBT key, val;
264-
key.data = (void*)mp_obj_str_get_data(index, &key.size);
265-
val.data = (void*)mp_obj_str_get_data(value, &val.size);
284+
key.data = (void*)mp_obj_str_get_data(index, &v);
285+
key.size = v;
286+
val.data = (void*)mp_obj_str_get_data(value, &v);
287+
val.size = v;
266288
int res = __bt_put(self->db, &key, &val, 0);
267289
CHECK_ERROR(res);
268290
return mp_const_none;
@@ -316,8 +338,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_KW(mod_btree_open_obj, 1, mod_btree_open);
316338
STATIC const mp_rom_map_elem_t mp_module_btree_globals_table[] = {
317339
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_btree) },
318340
{ MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mod_btree_open_obj) },
319-
{ MP_ROM_QSTR(MP_QSTR_INCL), MP_OBJ_NEW_SMALL_INT(FLAG_END_KEY_INCL) },
320-
{ MP_ROM_QSTR(MP_QSTR_DESC), MP_OBJ_NEW_SMALL_INT(FLAG_DESC) },
341+
{ MP_ROM_QSTR(MP_QSTR_INCL), MP_ROM_INT(FLAG_END_KEY_INCL) },
342+
{ MP_ROM_QSTR(MP_QSTR_DESC), MP_ROM_INT(FLAG_DESC) },
321343
};
322344

323345
STATIC MP_DEFINE_CONST_DICT(mp_module_btree_globals, mp_module_btree_globals_table);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy