{
PyObject_HEAD
z_stream zst;
+ int is_initialised;
} compobject;
static char compressobj__doc__[] =
self = PyObject_NEW(compobject, type);
if (self == NULL)
return NULL;
+ self->is_initialised = 0;
return self;
}
switch(err)
{
case (Z_OK):
+ self->is_initialised = 1;
return (PyObject*)self;
case (Z_MEM_ERROR):
+ Py_DECREF(self);
PyErr_SetString(PyExc_MemoryError,
"Can't allocate memory for compression object");
return NULL;
case(Z_STREAM_ERROR):
+ Py_DECREF(self);
PyErr_SetString(PyExc_ValueError,
"Invalid initialization option");
return NULL;
PyErr_Format(ZlibError,
"Error %i while creating compression object: %.200s",
err, self->zst.msg);
+ Py_DECREF(self);
return NULL;
}
}
switch(err)
{
case (Z_OK):
+ self->is_initialised = 1;
return (PyObject*)self;
case(Z_STREAM_ERROR):
+ Py_DECREF(self);
PyErr_SetString(PyExc_ValueError,
"Invalid initialization option");
return NULL;
case (Z_MEM_ERROR):
+ Py_DECREF(self);
PyErr_SetString(PyExc_MemoryError,
"Can't allocate memory for decompression object");
return NULL;
PyErr_Format(ZlibError,
"Error %i while creating decompression object: %.200s",
err, self->zst.msg);
+ Py_DECREF(self);
return NULL;
}
}
Comp_dealloc(self)
compobject *self;
{
- deflateEnd(&self->zst);
+ if (self->is_initialised)
+ deflateEnd(&self->zst);
PyMem_DEL(self);
}