summaryrefslogtreecommitdiff
path: root/source/pdf/pdf-write.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/pdf/pdf-write.c')
-rw-r--r--source/pdf/pdf-write.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/source/pdf/pdf-write.c b/source/pdf/pdf-write.c
index 0a7a0f2f..3f2c2cda 100644
--- a/source/pdf/pdf-write.c
+++ b/source/pdf/pdf-write.c
@@ -3221,20 +3221,20 @@ pdf_writer_end_page(fz_context *ctx, fz_document_writer *wri_, fz_device *dev)
}
static void
-pdf_writer_close(fz_context *ctx, fz_document_writer *wri_)
+pdf_writer_close_writer(fz_context *ctx, fz_document_writer *wri_)
{
pdf_writer *wri = (pdf_writer*)wri_;
- fz_try(ctx)
- pdf_save_document(ctx, wri->pdf, wri->filename, &wri->opts);
- fz_always(ctx)
- {
- fz_drop_buffer(ctx, wri->contents);
- pdf_drop_obj(ctx, wri->resources);
- pdf_drop_document(ctx, wri->pdf);
- fz_free(ctx, wri->filename);
- }
- fz_catch(ctx)
- fz_rethrow(ctx);
+ pdf_save_document(ctx, wri->pdf, wri->filename, &wri->opts);
+}
+
+static void
+pdf_writer_drop_writer(fz_context *ctx, fz_document_writer *wri_)
+{
+ pdf_writer *wri = (pdf_writer*)wri_;
+ fz_drop_buffer(ctx, wri->contents);
+ pdf_drop_obj(ctx, wri->resources);
+ pdf_drop_document(ctx, wri->pdf);
+ fz_free(ctx, wri->filename);
}
fz_document_writer *
@@ -3245,7 +3245,8 @@ fz_new_pdf_writer(fz_context *ctx, const char *path, const char *options)
wri = fz_malloc_struct(ctx, pdf_writer);
wri->super.begin_page = pdf_writer_begin_page;
wri->super.end_page = pdf_writer_end_page;
- wri->super.close = pdf_writer_close;
+ wri->super.close_writer = pdf_writer_close_writer;
+ wri->super.drop_writer = pdf_writer_drop_writer;
fz_try(ctx)
{