Skip to content

Commit 74f906c

Browse files
committed
gh-155742: Use PyMem_Malloc() in memoryview.hex()
Replace PyBytesWriter with a simple PyMem_Malloc(), since no bytes object is needed. PyMem_Malloc() should be more efficient in this case.
1 parent ab01d18 commit 74f906c

1 file changed

Lines changed: 7 additions & 10 deletions

File tree

‎Objects/memoryobject.c‎

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2468,22 +2468,19 @@ memoryview_hex_impl(PyMemoryViewObject *self, PyObject *sep,
24682468
return ret;
24692469
}
24702470

2471-
PyBytesWriter *writer = PyBytesWriter_Create(src->len);
2472-
if (writer == NULL) {
2471+
char *buffer = PyMem_Malloc(src->len);
2472+
if (buffer == NULL) {
2473+
PyErr_NoMemory();
24732474
return NULL;
24742475
}
24752476

2476-
if (PyBuffer_ToContiguous(PyBytesWriter_GetData(writer),
2477-
src, src->len, 'C') < 0) {
2478-
PyBytesWriter_Discard(writer);
2477+
if (PyBuffer_ToContiguous(buffer, src, src->len, 'C') < 0) {
2478+
PyMem_Free(buffer);
24792479
return NULL;
24802480
}
24812481

2482-
PyObject *ret = _Py_strhex_with_sep(
2483-
PyBytesWriter_GetData(writer),
2484-
PyBytesWriter_GetSize(writer),
2485-
sep, bytes_per_sep);
2486-
PyBytesWriter_Discard(writer);
2482+
PyObject *ret = _Py_strhex_with_sep(buffer, src->len, sep, bytes_per_sep);
2483+
PyMem_Free(buffer);
24872484

24882485
return ret;
24892486
}

0 commit comments

Comments
 (0)