https://github.com/python/cpython/commit/04eb5c8db1e24cabd0cb81392bb2632c03be1550
commit: 04eb5c8db1e24cabd0cb81392bb2632c03be1550
branch: main
author: sobolevn <[email protected]>
committer: sobolevn <[email protected]>
date: 2024-07-27T21:33:38+03:00
summary:

gh-122361: Use proper `PyUnicodeWriter_*` API in `constevaluator_call` (#122362)

files:
M Objects/typevarobject.c

diff --git a/Objects/typevarobject.c b/Objects/typevarobject.c
index fb1f260571b582..3c96850589d378 100644
--- a/Objects/typevarobject.c
+++ b/Objects/typevarobject.c
@@ -169,38 +169,40 @@ constevaluator_call(PyObject *self, PyObject *args, 
PyObject *kwargs)
     }
     PyObject *value = ((constevaluatorobject *)self)->value;
     if (format == 3) { // SOURCE
-        _PyUnicodeWriter writer;
-        _PyUnicodeWriter_Init(&writer);
+        PyUnicodeWriter *writer = PyUnicodeWriter_Create(5);  // cannot be <5
+        if (writer == NULL) {
+            return NULL;
+        }
         if (PyTuple_Check(value)) {
-            if (_PyUnicodeWriter_WriteASCIIString(&writer, "(", 1) < 0) {
-                _PyUnicodeWriter_Dealloc(&writer);
+            if (PyUnicodeWriter_WriteChar(writer, '(') < 0) {
+                PyUnicodeWriter_Discard(writer);
                 return NULL;
             }
             for (Py_ssize_t i = 0; i < PyTuple_GET_SIZE(value); i++) {
                 PyObject *item = PyTuple_GET_ITEM(value, i);
                 if (i > 0) {
-                    if (_PyUnicodeWriter_WriteASCIIString(&writer, ", ", 2) < 
0) {
-                        _PyUnicodeWriter_Dealloc(&writer);
+                    if (PyUnicodeWriter_WriteUTF8(writer, ", ", 2) < 0) {
+                        PyUnicodeWriter_Discard(writer);
                         return NULL;
                     }
                 }
-                if (_Py_typing_type_repr(&writer, item) < 0) {
-                    _PyUnicodeWriter_Dealloc(&writer);
+                if (_Py_typing_type_repr(writer, item) < 0) {
+                    PyUnicodeWriter_Discard(writer);
                     return NULL;
                 }
             }
-            if (_PyUnicodeWriter_WriteASCIIString(&writer, ")", 1) < 0) {
-                _PyUnicodeWriter_Dealloc(&writer);
+            if (PyUnicodeWriter_WriteChar(writer, ')') < 0) {
+                PyUnicodeWriter_Discard(writer);
                 return NULL;
             }
         }
         else {
-            if (_Py_typing_type_repr(&writer, value) < 0) {
-                _PyUnicodeWriter_Dealloc(&writer);
+            if (_Py_typing_type_repr(writer, value) < 0) {
+                PyUnicodeWriter_Discard(writer);
                 return NULL;
             }
         }
-        return _PyUnicodeWriter_Finish(&writer);
+        return PyUnicodeWriter_Finish(writer);
     }
     return Py_NewRef(value);
 }
@@ -259,7 +261,7 @@ _Py_typing_type_repr(PyUnicodeWriter *writer, PyObject *p)
     }
 
     if (p == (PyObject *)&_PyNone_Type) {
-        return _PyUnicodeWriter_WriteASCIIString(writer, "None", 4);
+        return PyUnicodeWriter_WriteUTF8(writer, "None", 4);
     }
 
     if ((rc = PyObject_HasAttrWithError(p, &_Py_ID(__origin__))) > 0 &&
@@ -306,7 +308,7 @@ _Py_typing_type_repr(PyUnicodeWriter *writer, PyObject *p)
     if (r == NULL) {
         return -1;
     }
-    rc = _PyUnicodeWriter_WriteStr(writer, r);
+    rc = PyUnicodeWriter_WriteStr(writer, r);
     Py_DECREF(r);
     return rc;
 }

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to