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]