diff options
author | Sebastian Rasmussen <sebras@gmail.com> | 2016-10-11 22:39:08 +0800 |
---|---|---|
committer | Sebastian Rasmussen <sebras@gmail.com> | 2016-10-14 01:19:07 +0800 |
commit | c3f0d8a4612f25ac3b728d8335c13dc543254be2 (patch) | |
tree | fe54f8e73a4ba87401de8cd5a35446910b484c7f /source/fitz/font.c | |
parent | 160369e81e6675d122b210b45844c0dc86ec8876 (diff) | |
download | mupdf-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.c | 20 |
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) |