Skip to content

Commit 0385b21

Browse files
committed
unix/modos: Support larger integer range in uos.stat fields.
On 32-bit builds these stat fields will overflow a small-int, so use mp_obj_new_int_from_uint to construct the int object. Signed-off-by: Damien George <[email protected]>
1 parent c70e599 commit 0385b21

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

ports/unix/modos.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,15 @@ STATIC mp_obj_t mod_os_stat(mp_obj_t path_in) {
5858

5959
mp_obj_tuple_t *t = MP_OBJ_TO_PTR(mp_obj_new_tuple(10, NULL));
6060
t->items[0] = MP_OBJ_NEW_SMALL_INT(sb.st_mode);
61-
t->items[1] = MP_OBJ_NEW_SMALL_INT(sb.st_ino);
62-
t->items[2] = MP_OBJ_NEW_SMALL_INT(sb.st_dev);
63-
t->items[3] = MP_OBJ_NEW_SMALL_INT(sb.st_nlink);
64-
t->items[4] = MP_OBJ_NEW_SMALL_INT(sb.st_uid);
65-
t->items[5] = MP_OBJ_NEW_SMALL_INT(sb.st_gid);
61+
t->items[1] = mp_obj_new_int_from_uint(sb.st_ino);
62+
t->items[2] = mp_obj_new_int_from_uint(sb.st_dev);
63+
t->items[3] = mp_obj_new_int_from_uint(sb.st_nlink);
64+
t->items[4] = mp_obj_new_int_from_uint(sb.st_uid);
65+
t->items[5] = mp_obj_new_int_from_uint(sb.st_gid);
6666
t->items[6] = mp_obj_new_int_from_uint(sb.st_size);
67-
t->items[7] = MP_OBJ_NEW_SMALL_INT(sb.st_atime);
68-
t->items[8] = MP_OBJ_NEW_SMALL_INT(sb.st_mtime);
69-
t->items[9] = MP_OBJ_NEW_SMALL_INT(sb.st_ctime);
67+
t->items[7] = mp_obj_new_int_from_uint(sb.st_atime);
68+
t->items[8] = mp_obj_new_int_from_uint(sb.st_mtime);
69+
t->items[9] = mp_obj_new_int_from_uint(sb.st_ctime);
7070
return MP_OBJ_FROM_PTR(t);
7171
}
7272
STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_os_stat_obj, mod_os_stat);

0 commit comments

Comments
 (0)