Browse Source

py/objstr: Make empty bytes object have a null-terminating byte.

Because a lot of string processing functions assume there is a null
terminating byte, so they can work in an efficient way.

Fixes issue #3334.
pull/3344/merge
Damien George 7 years ago
parent
commit
dfa563c71f
  1. 4
      py/objstr.c
  2. 3
      tests/basics/bytes.py

4
py/objstr.c

@ -1973,8 +1973,8 @@ const mp_obj_type_t mp_type_bytes = {
.locals_dict = (mp_obj_dict_t*)&str8_locals_dict,
};
// the zero-length bytes
const mp_obj_str_t mp_const_empty_bytes_obj = {{&mp_type_bytes}, 0, 0, NULL};
// The zero-length bytes object, with data that includes a null-terminating byte
const mp_obj_str_t mp_const_empty_bytes_obj = {{&mp_type_bytes}, 0, 0, (const byte*)""};
// Create a str/bytes object using the given data. New memory is allocated and
// the data is copied across.

3
tests/basics/bytes.py

@ -8,6 +8,9 @@ print(b'\u1234')
print(bytes())
print(bytes(b'abc'))
# make sure empty bytes is converted correctly
print(str(bytes(), 'utf-8'))
a = b"123"
print(a)
print(str(a))

Loading…
Cancel
Save