mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Improve palmdoc C decompression routine to accept arbitrary sized input data blocks
This commit is contained in:
parent
826bf29f5d
commit
a80b5a9f1a
@ -17,6 +17,7 @@
|
|||||||
#define BUFFER 6000
|
#define BUFFER 6000
|
||||||
|
|
||||||
#define MIN(x, y) ( ((x) < (y)) ? (x) : (y) )
|
#define MIN(x, y) ( ((x) < (y)) ? (x) : (y) )
|
||||||
|
#define MAX(x, y) ( ((x) > (y)) ? (x) : (y) )
|
||||||
|
|
||||||
typedef unsigned short int Byte;
|
typedef unsigned short int Byte;
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -53,7 +54,7 @@ cpalmdoc_decompress(PyObject *self, PyObject *args) {
|
|||||||
// Map chars to bytes
|
// Map chars to bytes
|
||||||
for (j = 0; j < input_len; j++)
|
for (j = 0; j < input_len; j++)
|
||||||
input[j] = (_input[j] < 0) ? _input[j]+256 : _input[j];
|
input[j] = (_input[j] < 0) ? _input[j]+256 : _input[j];
|
||||||
output = (char *)PyMem_Malloc(sizeof(char)*BUFFER);
|
output = (char *)PyMem_Malloc(sizeof(char)*(MAX(BUFFER, 5*input_len)));
|
||||||
if (output == NULL) return PyErr_NoMemory();
|
if (output == NULL) return PyErr_NoMemory();
|
||||||
|
|
||||||
while (i < input_len) {
|
while (i < input_len) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user