summaryrefslogtreecommitdiff
path: root/source/fitz/font.c
diff options
context:
space:
mode:
authorSebastian Rasmussen <sebras@gmail.com>2016-10-11 22:39:08 +0800
committerSebastian Rasmussen <sebras@gmail.com>2016-10-14 01:19:07 +0800
commitc3f0d8a4612f25ac3b728d8335c13dc543254be2 (patch)
treefe54f8e73a4ba87401de8cd5a35446910b484c7f /source/fitz/font.c
parent160369e81e6675d122b210b45844c0dc86ec8876 (diff)
downloadmupdf-c3f0d8a4612f25ac3b728d8335c13dc543254be2.tar.xz
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.
Diffstat (limited to 'source/fitz/font.c')
-rw-r--r--source/fitz/font.c20
1 files changed, 11 insertions, 9 deletions
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)