diff --git a/src/calibre/ebooks/compression/palmdoc.c b/src/calibre/ebooks/compression/palmdoc.c index 4d913dfd2b..6b07bb9cd5 100644 --- a/src/calibre/ebooks/compression/palmdoc.c +++ b/src/calibre/ebooks/compression/palmdoc.c @@ -17,6 +17,7 @@ #define BUFFER 6000 #define MIN(x, y) ( ((x) < (y)) ? (x) : (y) ) +#define MAX(x, y) ( ((x) > (y)) ? (x) : (y) ) typedef unsigned short int Byte; typedef struct { @@ -53,7 +54,7 @@ cpalmdoc_decompress(PyObject *self, PyObject *args) { // Map chars to bytes for (j = 0; j < input_len; 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(); while (i < input_len) {