mirror of
https://github.com/python/cpython.git
synced 2025-12-04 00:30:19 +00:00
gh-132983: Minor fixes and clean up for the _zstd module (GH-134930)
This commit is contained in:
parent
fe6f8a3619
commit
b595237166
6 changed files with 165 additions and 159 deletions
|
|
@ -16,7 +16,6 @@ class _zstd.ZstdCompressor "ZstdCompressor *" "&zstd_compressor_type_spec"
|
|||
|
||||
#include "_zstdmodule.h"
|
||||
#include "buffer.h"
|
||||
#include "zstddict.h"
|
||||
#include "internal/pycore_lock.h" // PyMutex_IsLocked
|
||||
|
||||
#include <stddef.h> // offsetof()
|
||||
|
|
@ -71,9 +70,6 @@ _zstd_set_c_level(ZstdCompressor *self, int level)
|
|||
/* Check error */
|
||||
if (ZSTD_isError(zstd_ret)) {
|
||||
_zstd_state* mod_state = PyType_GetModuleState(Py_TYPE(self));
|
||||
if (mod_state == NULL) {
|
||||
return -1;
|
||||
}
|
||||
set_zstd_error(mod_state, ERR_SET_C_LEVEL, zstd_ret);
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -265,56 +261,17 @@ static int
|
|||
_zstd_load_c_dict(ZstdCompressor *self, PyObject *dict)
|
||||
{
|
||||
_zstd_state* mod_state = PyType_GetModuleState(Py_TYPE(self));
|
||||
if (mod_state == NULL) {
|
||||
/* When compressing, use undigested dictionary by default. */
|
||||
int type = DICT_TYPE_UNDIGESTED;
|
||||
ZstdDict *zd = _Py_parse_zstd_dict(mod_state, dict, &type);
|
||||
if (zd == NULL) {
|
||||
return -1;
|
||||
}
|
||||
ZstdDict *zd;
|
||||
int type, ret;
|
||||
|
||||
/* Check ZstdDict */
|
||||
ret = PyObject_IsInstance(dict, (PyObject*)mod_state->ZstdDict_type);
|
||||
if (ret < 0) {
|
||||
return -1;
|
||||
}
|
||||
else if (ret > 0) {
|
||||
/* When compressing, use undigested dictionary by default. */
|
||||
zd = (ZstdDict*)dict;
|
||||
type = DICT_TYPE_UNDIGESTED;
|
||||
PyMutex_Lock(&zd->lock);
|
||||
ret = _zstd_load_impl(self, zd, mod_state, type);
|
||||
PyMutex_Unlock(&zd->lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Check (ZstdDict, type) */
|
||||
if (PyTuple_CheckExact(dict) && PyTuple_GET_SIZE(dict) == 2) {
|
||||
/* Check ZstdDict */
|
||||
ret = PyObject_IsInstance(PyTuple_GET_ITEM(dict, 0),
|
||||
(PyObject*)mod_state->ZstdDict_type);
|
||||
if (ret < 0) {
|
||||
return -1;
|
||||
}
|
||||
else if (ret > 0) {
|
||||
/* type == -1 may indicate an error. */
|
||||
type = PyLong_AsInt(PyTuple_GET_ITEM(dict, 1));
|
||||
if (type == DICT_TYPE_DIGESTED
|
||||
|| type == DICT_TYPE_UNDIGESTED
|
||||
|| type == DICT_TYPE_PREFIX)
|
||||
{
|
||||
assert(type >= 0);
|
||||
zd = (ZstdDict*)PyTuple_GET_ITEM(dict, 0);
|
||||
PyMutex_Lock(&zd->lock);
|
||||
ret = _zstd_load_impl(self, zd, mod_state, type);
|
||||
PyMutex_Unlock(&zd->lock);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Wrong type */
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"zstd_dict argument should be ZstdDict object.");
|
||||
return -1;
|
||||
int ret;
|
||||
PyMutex_Lock(&zd->lock);
|
||||
ret = _zstd_load_impl(self, zd, mod_state, type);
|
||||
PyMutex_Unlock(&zd->lock);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*[clinic input]
|
||||
|
|
@ -481,9 +438,7 @@ compress_lock_held(ZstdCompressor *self, Py_buffer *data,
|
|||
/* Check error */
|
||||
if (ZSTD_isError(zstd_ret)) {
|
||||
_zstd_state* mod_state = PyType_GetModuleState(Py_TYPE(self));
|
||||
if (mod_state != NULL) {
|
||||
set_zstd_error(mod_state, ERR_COMPRESS, zstd_ret);
|
||||
}
|
||||
set_zstd_error(mod_state, ERR_COMPRESS, zstd_ret);
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
|
@ -553,9 +508,7 @@ compress_mt_continue_lock_held(ZstdCompressor *self, Py_buffer *data)
|
|||
/* Check error */
|
||||
if (ZSTD_isError(zstd_ret)) {
|
||||
_zstd_state* mod_state = PyType_GetModuleState(Py_TYPE(self));
|
||||
if (mod_state != NULL) {
|
||||
set_zstd_error(mod_state, ERR_COMPRESS, zstd_ret);
|
||||
}
|
||||
set_zstd_error(mod_state, ERR_COMPRESS, zstd_ret);
|
||||
goto error;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue