| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
On Free Threading, _PyBytes_Resize(&obj, 1) no longer returns a single byte singleton if the current thread is different than the thread which created the object. Co-authored-by: Cody Maloney <cmaloney@users.noreply.github.com> Co-authored-by: Victor Stinner <vstinner@python.org> (cherry picked from commit fd569ea)
|
I failed to find a function in Python 3.14 stdlib which still mutates the bytes object after calling _PyBytes_Resize(). The common pattern is more like the following code which is not affected: bytes = PyBytes_FromStringAndSize(NULL, size);
... write into bytes ...
_PyBytes_Resize(&bytes, n);
return bytes; // bytes no longer mutated from this pointThere is _io.BytesIO.truncate() which may be affected by the issue, but its resize function allocates "size + 1" and so is not affected at the end. |
Sorry, something went wrong.
|
This change should be backported to Python 3.13, but the fix there is different because _PyBytes_Resize() doesn't test _PyObject_IsUniquelyReferenced() but tests Py_REFCNT(v) == 1 instead. |
Sorry, something went wrong.
…on#156996) (python#157373) _PyBytes_Resize(&obj, 1) no longer returns a single byte singleton if the reference count is greater than 1. (cherry picked from commit fd569ea) Co-authored-by: Stan Ulbrych <stan@python.org> Co-authored-by: Cody Maloney <cmaloney@users.noreply.github.com> Co-authored-by: Victor Stinner <vstinner@python.org>
|
GH-157436 is a backport of this pull request to the 3.14 branch. |
Sorry, something went wrong.
|
GH-157436 is a backport of this pull request to the 3.13 branch. |
Sorry, something went wrong.
…157373) (#157436) [3.14] gh-156995: Fix _PyBytes_Resize() in Free Threading (#156996) (#157373) _PyBytes_Resize(&obj, 1) no longer returns a single byte singleton if the reference count is greater than 1. (cherry picked from commit fd569ea) Co-authored-by: Stan Ulbrych <stan@python.org> Co-authored-by: Cody Maloney <cmaloney@users.noreply.github.com>
| @@ -0,0 +1,3 @@ | |||
| On Free Threading, ``_PyBytes_Resize(&obj, 1)`` no longer returns a single byte | |||
| singleton is the current thread is different than the thread which created the | |||
There was a problem hiding this comment.
| singleton is the current thread is different than the thread which created the | |
| singleton if the current thread is different than the thread which created the |
nit, is -> if
Sorry, something went wrong.
There was a problem hiding this comment.
Ooops, I wrote #157477 to fix the typo. Thanks for the post-merge review :-)
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
On Free Threading, _PyBytes_Resize(&obj, 1) no longer returns a single byte singleton is the current thread is different than the thread which created the object.
(cherry picked from commit fd569ea)