From c3f0d8a4612f25ac3b728d8335c13dc543254be2 Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Tue, 11 Oct 2016 22:39:08 +0800 Subject: Drop all contexts the same way. * Handle multiple calls to fz_drop_colorspace_context() and fz_drop_font_context(). * Allow missing context in call to fz_drop_aa_context() and fz_drop_glyph_cache_context(). * Only drop font context objects when dropping the last reference. * Avoid unnecessary NULL checks. --- source/fitz/font.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) (limited to 'source/fitz/font.c') diff --git a/source/fitz/font.c b/source/fitz/font.c index 88d5e358..93546042 100644 --- a/source/fitz/font.c +++ b/source/fitz/font.c @@ -235,21 +235,23 @@ fz_keep_font_context(fz_context *ctx) void fz_drop_font_context(fz_context *ctx) { - int i; - if (!ctx) return; - for (i = 0; i < nelem(ctx->font->fallback); ++i) + if (fz_drop_imp(ctx, ctx->font, &ctx->font->ctx_refs)) { - fz_drop_font(ctx, ctx->font->fallback[i].serif); - fz_drop_font(ctx, ctx->font->fallback[i].sans); - } - fz_drop_font(ctx, ctx->font->symbol); - fz_drop_font(ctx, ctx->font->emoji); + int i; - if (fz_drop_imp(ctx, ctx->font, &ctx->font->ctx_refs)) + for (i = 0; i < nelem(ctx->font->fallback); ++i) + { + fz_drop_font(ctx, ctx->font->fallback[i].serif); + fz_drop_font(ctx, ctx->font->fallback[i].sans); + } + fz_drop_font(ctx, ctx->font->symbol); + fz_drop_font(ctx, ctx->font->emoji); fz_free(ctx, ctx->font); + ctx->font = NULL; + } } void fz_install_load_system_font_funcs(fz_context *ctx, fz_load_system_font_func f, fz_load_system_cjk_font_func f_cjk) -- cgit v1.2.3