New submission from tholl <p...@any.tholl.xyz>:
`bytearray_repeat` uses `ob_bytes` rather than `ob_start` as its source data for copying, leading to incorrect results in some edge cases where the two are distinct. It should probably use `PyByteArray_AS_STRING(self)` just like `bytearray_irepeat` and basically all the other functions. As far as I can see, these edge cases occur pretty much only after `bytearray_setslice_linear`, where `ob_start` can be adjusted without changing `ob_bytes`. A simple example (also attached as poc.py): >>> ba = bytearray(b'0123456789abcdef') >>> ba[:10] = b'test' >>> print(ba) bytearray(b'testabcdef') >>> print(ba * 1) bytearray(b'012345test') I'll try to submit a PR for this later today. ---------- components: Interpreter Core files: poc.py messages: 385017 nosy: tholl priority: normal severity: normal status: open title: bytearray_repeat copies from ob_bytes instead of ob_start versions: Python 3.10, Python 3.6, Python 3.7, Python 3.8, Python 3.9 Added file: https://bugs.python.org/file49739/poc.py _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue42924> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com