]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.15] gh-153419: Fix several issues around bytearray __init__ (GH-153498) (#154622)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 24 Jul 2026 17:25:56 +0000 (19:25 +0200)
committerGitHub <noreply@github.com>
Fri, 24 Jul 2026 17:25:56 +0000 (19:25 +0200)
commit370e67029b0e380c5caf47b89c34c09cb82ad9c8
tree741e5862c629d99ccae588196c8af3767ab797ae
parent99f684403a4afce526fb2258f7c5170a267b5d1a
[3.15] gh-153419: Fix several issues around bytearray __init__ (GH-153498) (#154622)

gh-153419: Fix several issues around bytearray __init__ (GH-153498)

Introduce a bytearray_new() function to ensure that
ob_bytes_object is always set on a bytearray.

Resizing a bytearray to 0 length now explicitly sets
the ob_bytes_object to the empty constant immortal.

Add a check in the 'bytearray init from string'
fast path to ensure there are no active exports.

This fixes asserts/crashes on the following:
 - bytearray(1).__init__()
 - bytearray().__new__(bytearray).append(1)
 - a = bytearray(); b = memoryview(a); a.__init__('x', 'ascii')
(cherry picked from commit d5c1b29658063d1ef9d66515d8e4cb9929126be7)

Co-authored-by: Steve Stagg <stestagg@gmail.com>
Co-authored-by: Cody Maloney <cmaloney@users.noreply.github.com>
Lib/test/test_bytes.py
Misc/NEWS.d/next/Core_and_Builtins/2026-07-11-01-17-57.gh-issue-153419.U8HJOJ.rst [new file with mode: 0644]
Objects/bytearrayobject.c
Objects/bytesobject.c