Skip to content

Commit 8886458

Browse files
jimmodpgeorge
authored andcommitted
py/objstr: Always ensure mp_obj_str_from_vstr is unicode-safe.
Now that we have `mp_obj_new_str_type_from_vstr` (private helper used by objstr.c) split from the public API (`mp_obj_new_str_from_vstr`), we can enforce a unicode check at the public API without incurring a performance cost on the various objstr.c methods (which are already working on known unicode-safe strings). Signed-off-by: Jim Mussared <[email protected]>
1 parent 8a0ee5a commit 8886458

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

py/objstr.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2248,6 +2248,11 @@ STATIC mp_obj_t mp_obj_new_str_type_from_vstr(const mp_obj_type_t *type, vstr_t
22482248
}
22492249

22502250
mp_obj_t mp_obj_new_str_from_vstr(vstr_t *vstr) {
2251+
#if MICROPY_PY_BUILTINS_STR_UNICODE && MICROPY_PY_BUILTINS_STR_UNICODE_CHECK
2252+
if (!utf8_check((byte *)vstr->buf, vstr->len)) {
2253+
mp_raise_msg(&mp_type_UnicodeError, NULL);
2254+
}
2255+
#endif // MICROPY_PY_BUILTINS_STR_UNICODE && MICROPY_PY_BUILTINS_STR_UNICODE_CHECK
22512256
return mp_obj_new_str_type_from_vstr(&mp_type_str, vstr);
22522257
}
22532258

0 commit comments

Comments
 (0)