mirror of
https://github.com/python/cpython.git
synced 2025-08-22 01:35:16 +00:00
Issue #25384: Fix binascii.rledecode_hqx()
Fix usage of _PyBytesWriter API. Use the new _PyBytesWriter_Resize() function instead of _PyBytesWriter_Prepare().
This commit is contained in:
parent
c3d2bc19e4
commit
1bfe930585
2 changed files with 22 additions and 5 deletions
|
@ -800,14 +800,15 @@ binascii_rledecode_hqx_impl(PyModuleDef *module, Py_buffer *data)
|
|||
return PyErr_NoMemory();
|
||||
|
||||
/* Allocate a buffer of reasonable size. Resized when needed */
|
||||
out_len = in_len * 2;
|
||||
out_len = in_len;
|
||||
out_data = _PyBytesWriter_Alloc(&writer, out_len);
|
||||
if (out_data == NULL)
|
||||
return NULL;
|
||||
|
||||
/* Use overallocation */
|
||||
writer.overallocate = 1;
|
||||
out_len_left = writer.allocated;
|
||||
out_len = writer.allocated;
|
||||
out_len_left = out_len;
|
||||
|
||||
/*
|
||||
** We need two macros here to get/put bytes and handle
|
||||
|
@ -830,10 +831,12 @@ binascii_rledecode_hqx_impl(PyModuleDef *module, Py_buffer *data)
|
|||
overallocate the buffer anymore */ \
|
||||
writer.overallocate = 0; \
|
||||
} \
|
||||
out_data = _PyBytesWriter_Prepare(&writer, out_data, 1); \
|
||||
out_data = _PyBytesWriter_Resize(&writer, out_data, \
|
||||
writer.allocated + 1); \
|
||||
if (out_data == NULL) \
|
||||
goto error; \
|
||||
out_len_left = writer.allocated; \
|
||||
out_len_left = writer.allocated - out_len - 1; \
|
||||
out_len = writer.allocated; \
|
||||
} \
|
||||
*out_data++ = b; \
|
||||
} while(0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue