enable garbage collection for pdfpage and ft_face

pull/2/merge
HW 13 years ago
parent b38b75298a
commit 04772ea3ee

10
ft.c

@ -140,9 +140,12 @@ static int renderGlyph(lua_State *L) {
static int doneFace(lua_State *L) {
FT_Face *face = (FT_Face*) luaL_checkudata(L, 1, "ft_face");
FT_Error error = FT_Done_Face(*face);
if(error) {
return luaL_error(L, "freetype error when freeing face");
if(*face != NULL) {
FT_Error error = FT_Done_Face(*face);
if(error) {
return luaL_error(L, "freetype error when freeing face");
}
*face = NULL;
}
return 0;
}
@ -150,6 +153,7 @@ static int doneFace(lua_State *L) {
static const struct luaL_reg ft_face_meth[] = {
{"renderGlyph", renderGlyph},
{"done", doneFace},
{"__gc", doneFace},
{NULL, NULL}
};

@ -231,9 +231,12 @@ static int closePage(lua_State *L) {
#endif
//fz_free_glyph_cache(page->doc->glyphcache);
//page->doc->glyphcache = fz_new_glyph_cache();
pdf_free_page(page->page);
if(page->page != NULL) {
pdf_free_page(page->page);
pdf_age_store(page->doc->xref->store, 2);
pdf_age_store(page->doc->xref->store, 2);
page->page = NULL;
}
}
static int drawPage(lua_State *L) {
@ -315,6 +318,7 @@ static const struct luaL_reg pdfpage_meth[] = {
{"getSize", getPageSize},
{"getUsedBBox", getUsedBBox},
{"close", closePage},
{"__gc", closePage},
{"draw", drawPage},
{NULL, NULL}
};

Loading…
Cancel
Save