]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-129813: Fix PyBytesWriter tests (#139892)
authorVictor Stinner <vstinner@python.org>
Fri, 10 Oct 2025 11:01:06 +0000 (13:01 +0200)
committerGitHub <noreply@github.com>
Fri, 10 Oct 2025 11:01:06 +0000 (13:01 +0200)
Doc/c-api/bytes.rst
Modules/_testcapi/bytes.c

index 177ebf6c6b3f4551e0e15fa4be125e6d4e01f91a..0a73c4748f44110092b039eb48c6dff3374441ab 100644 (file)
@@ -260,7 +260,7 @@ Create, Finish, Discard
    writer size to *size*. The caller is responsible to write *size*
    bytes using :c:func:`PyBytesWriter_GetData`.
 
-   On error, set an exception and return NULL.
+   On error, set an exception and return ``NULL``.
 
    *size* must be positive or zero.
 
index 388e65456c3a8b7f15ca94906e3499e4c3af380e..f12fc7f5f3a2a869d0d736c9ec9625f632819db8 100644 (file)
@@ -79,11 +79,6 @@ writer_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
 static int
 writer_init(PyObject *self_raw, PyObject *args, PyObject *kwargs)
 {
-    WriterObject *self = (WriterObject *)self_raw;
-    if (self->writer) {
-        PyBytesWriter_Discard(self->writer);
-    }
-
     if (kwargs && PyDict_GET_SIZE(kwargs)) {
         PyErr_Format(PyExc_TypeError,
                      "PyBytesWriter() takes exactly no keyword arguments");
@@ -99,6 +94,10 @@ writer_init(PyObject *self_raw, PyObject *args, PyObject *kwargs)
         return -1;
     }
 
+    WriterObject *self = (WriterObject *)self_raw;
+    if (self->writer) {
+        PyBytesWriter_Discard(self->writer);
+    }
     if (use_bytearray) {
         self->writer = _PyBytesWriter_CreateByteArray(alloc);
     }