test_unicode test_raiseMemError miscalculates struct size when string has UTF-8 representation. · Issue #93575 · python/cpython (original) (raw)
The test case test_raiseMemError
assumes that all structs have a NULL byte of length 1. However compact_struct_size
allocate 2 or 4 bytes space for NULL bytes: (PyUnicode_GET_LENGTH(self) + 1) * PyUnicode_KIND(self)
. Note that it's (len(s) + 1) * char_size
, not len(s) * char_size + 1
. The bug introduces an off-by-one / off-by-three error that sometimes leads to failing test on WASI, because code does not raise a memory error.