Merge pull request #1936 from wiredfool/unref_error

Fix "Fatal Python error: UNREF invalid object" in debug builds
This commit is contained in:
wiredfool 2016-06-08 14:16:42 +01:00
commit a83ae6caee
2 changed files with 9 additions and 5 deletions

View File

@ -119,7 +119,9 @@ getfont(PyObject* self_, PyObject* args, PyObject* kw)
PyMem_Free(filename); PyMem_Free(filename);
return NULL; return NULL;
} }
self->face = NULL;
if (filename && font_bytes_size <= 0) { if (filename && font_bytes_size <= 0) {
self->font_bytes = NULL; self->font_bytes = NULL;
error = FT_New_Face(library, filename, index, &self->face); error = FT_New_Face(library, filename, index, &self->face);
@ -153,7 +155,7 @@ getfont(PyObject* self_, PyObject* args, PyObject* kw)
if (self->font_bytes) { if (self->font_bytes) {
PyMem_Free(self->font_bytes); PyMem_Free(self->font_bytes);
} }
PyObject_Del(self); Py_DECREF(self);
return geterror(error); return geterror(error);
} }
@ -440,7 +442,9 @@ font_render(FontObject* self, PyObject* args)
static void static void
font_dealloc(FontObject* self) font_dealloc(FontObject* self)
{ {
FT_Done_Face(self->face); if (self->face) {
FT_Done_Face(self->face);
}
if (self->font_bytes) { if (self->font_bytes) {
PyMem_Free(self->font_bytes); PyMem_Free(self->font_bytes);
} }

4
map.c
View File

@ -73,7 +73,7 @@ PyImaging_MapperNew(const char* filename, int readonly)
NULL); NULL);
if (mapper->hFile == (HANDLE)-1) { if (mapper->hFile == (HANDLE)-1) {
PyErr_SetString(PyExc_IOError, "cannot open file"); PyErr_SetString(PyExc_IOError, "cannot open file");
PyObject_Del(mapper); Py_DECREF(mapper);
return NULL; return NULL;
} }
@ -84,7 +84,7 @@ PyImaging_MapperNew(const char* filename, int readonly)
if (mapper->hMap == (HANDLE)-1) { if (mapper->hMap == (HANDLE)-1) {
CloseHandle(mapper->hFile); CloseHandle(mapper->hFile);
PyErr_SetString(PyExc_IOError, "cannot map file"); PyErr_SetString(PyExc_IOError, "cannot map file");
PyObject_Del(mapper); Py_DECREF(mapper);
return NULL; return NULL;
} }