Skip to content

Commit 14d75a0

Browse files
committed
pythongh-155742: Use PyBytesWriter in _zstd.finalize_dict()
Replace soft deprecated PyBytes_FromStringAndSize() with PyBytesWriter.
1 parent f5dd52d commit 14d75a0

1 file changed

Lines changed: 10 additions & 11 deletions

File tree

Modules/_zstd/_zstdmodule.c

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,8 @@ _zstd_finalize_dict_impl(PyObject *module, PyBytesObject *custom_dict_bytes,
353353
{
354354
Py_ssize_t chunks_number;
355355
size_t *chunk_sizes = NULL;
356-
PyObject *dst_dict_bytes = NULL;
356+
PyBytesWriter *dst_dict_bytes = NULL;
357+
PyObject *result = NULL;
357358
size_t zstd_ret;
358359
ZDICT_params_t params;
359360

@@ -372,7 +373,7 @@ _zstd_finalize_dict_impl(PyObject *module, PyBytesObject *custom_dict_bytes,
372373
}
373374

374375
/* Allocate dict buffer */
375-
dst_dict_bytes = PyBytes_FromStringAndSize(NULL, dict_size);
376+
dst_dict_bytes = PyBytesWriter_Create(dict_size);
376377
if (dst_dict_bytes == NULL) {
377378
goto error;
378379
}
@@ -389,7 +390,8 @@ _zstd_finalize_dict_impl(PyObject *module, PyBytesObject *custom_dict_bytes,
389390
/* Finalize the dictionary */
390391
Py_BEGIN_ALLOW_THREADS
391392
zstd_ret = ZDICT_finalizeDictionary(
392-
PyBytes_AS_STRING(dst_dict_bytes), dict_size,
393+
PyBytesWriter_GetData(dst_dict_bytes),
394+
PyBytesWriter_GetSize(dst_dict_bytes),
393395
PyBytes_AS_STRING(custom_dict_bytes),
394396
Py_SIZE(custom_dict_bytes),
395397
PyBytes_AS_STRING(samples_bytes), chunk_sizes,
@@ -404,18 +406,15 @@ _zstd_finalize_dict_impl(PyObject *module, PyBytesObject *custom_dict_bytes,
404406
}
405407

406408
/* Resize dict_buffer */
407-
if (_PyBytes_Resize(&dst_dict_bytes, zstd_ret) < 0) {
408-
goto error;
409-
}
410-
411-
goto success;
409+
result = PyBytesWriter_FinishWithSize(dst_dict_bytes, zstd_ret);
410+
goto done;
412411

413412
error:
414-
Py_CLEAR(dst_dict_bytes);
413+
PyBytesWriter_Discard(dst_dict_bytes);
415414

416-
success:
415+
done:
417416
PyMem_Free(chunk_sizes);
418-
return dst_dict_bytes;
417+
return result;
419418
}
420419

421420

0 commit comments

Comments
 (0)