89 lines
2.2 KiB
Diff
89 lines
2.2 KiB
Diff
--- a/src/python-zstd.c
|
|
+++ b/src/python-zstd.c
|
|
@@ -29,13 +29,16 @@
|
|
|
|
#include <stdlib.h>
|
|
#include <stddef.h>
|
|
+
|
|
+/* Since 3.8 it is mandatory to use proper type for # formats */
|
|
+#define PY_SSIZE_T_CLEAN
|
|
#include <Python.h>
|
|
+
|
|
#include "bytesobject.h"
|
|
#include "zstd.h"
|
|
#include "util.h"
|
|
#include "python-zstd.h"
|
|
|
|
-
|
|
/**
|
|
* New function for multi-threaded compression.
|
|
* Uses origin zstd header, nothing more.
|
|
@@ -47,12 +50,13 @@
|
|
|
|
PyObject *result;
|
|
const char *source;
|
|
- uint32_t source_size;
|
|
+ Py_ssize_t source_size;
|
|
char *dest;
|
|
- uint32_t dest_size;
|
|
+ Py_ssize_t dest_size;
|
|
size_t cSize;
|
|
int32_t level = ZSTD_CLEVEL_DEFAULT;
|
|
int32_t threads = 0;
|
|
+ ZSTD_CCtx* cctx = 0;
|
|
|
|
#if PY_MAJOR_VERSION >= 3
|
|
if (!PyArg_ParseTuple(args, "y#|ii", &source, &source_size, &level, &threads))
|
|
@@ -87,7 +91,7 @@
|
|
return NULL;
|
|
}
|
|
|
|
- dest_size = ZSTD_compressBound(source_size);
|
|
+ dest_size = (Py_ssize_t)ZSTD_compressBound(source_size);
|
|
result = PyBytes_FromStringAndSize(NULL, dest_size);
|
|
if (result == NULL) {
|
|
return NULL;
|
|
@@ -96,12 +100,13 @@
|
|
if (source_size > 0) {
|
|
dest = PyBytes_AS_STRING(result);
|
|
|
|
- ZSTD_CCtx* cctx = ZSTD_createCCtx();
|
|
+ cctx = ZSTD_createCCtx();
|
|
+
|
|
ZSTD_CCtx_setParameter(cctx, ZSTD_c_compressionLevel, level);
|
|
ZSTD_CCtx_setParameter(cctx, ZSTD_c_nbWorkers, threads);
|
|
|
|
Py_BEGIN_ALLOW_THREADS
|
|
- cSize = ZSTD_compress2(cctx, dest, dest_size, source, source_size);
|
|
+ cSize = ZSTD_compress2(cctx, dest, (size_t)dest_size, source, (size_t)source_size);
|
|
Py_END_ALLOW_THREADS
|
|
|
|
ZSTD_freeCCtx(cctx);
|
|
@@ -126,7 +131,7 @@
|
|
|
|
PyObject *result;
|
|
const char *source;
|
|
- uint32_t source_size;
|
|
+ Py_ssize_t source_size;
|
|
uint64_t dest_size;
|
|
char error = 0;
|
|
size_t cSize;
|
|
@@ -233,7 +238,7 @@
|
|
|
|
PyObject *result;
|
|
const char *source;
|
|
- uint32_t source_size;
|
|
+ Py_ssize_t source_size;
|
|
char *dest;
|
|
uint32_t dest_size;
|
|
size_t cSize;
|
|
@@ -289,7 +294,7 @@
|
|
|
|
PyObject *result;
|
|
const char *source;
|
|
- uint32_t source_size;
|
|
+ Py_ssize_t source_size;
|
|
uint32_t dest_size;
|
|
size_t cSize;
|
|
|