summaryrefslogtreecommitdiff
path: root/source/fitz/output-cbz.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/fitz/output-cbz.c')
-rw-r--r--source/fitz/output-cbz.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/source/fitz/output-cbz.c b/source/fitz/output-cbz.c
index 80ef287c..43be16cb 100644
--- a/source/fitz/output-cbz.c
+++ b/source/fitz/output-cbz.c
@@ -29,6 +29,9 @@ cbz_end_page(fz_context *ctx, fz_document_writer *wri_, fz_device *dev)
fz_buffer *buffer;
char name[40];
+ fz_close_device(ctx, dev);
+ fz_drop_device(ctx, dev);
+
wri->count += 1;
fz_snprintf(name, sizeof name, "p%04d.png", wri->count);
@@ -43,20 +46,21 @@ cbz_end_page(fz_context *ctx, fz_document_writer *wri_, fz_device *dev)
fz_drop_pixmap(ctx, wri->pixmap);
wri->pixmap = NULL;
+}
- fz_drop_device(ctx, dev);
+static void
+cbz_close_writer(fz_context *ctx, fz_document_writer *wri_)
+{
+ fz_cbz_writer *wri = (fz_cbz_writer*)wri_;
+ fz_close_zip_writer(ctx, wri->zip);
}
static void
-cbz_close(fz_context *ctx, fz_document_writer *wri_)
+cbz_drop_writer(fz_context *ctx, fz_document_writer *wri_)
{
fz_cbz_writer *wri = (fz_cbz_writer*)wri_;
- fz_try(ctx)
- fz_drop_zip_writer(ctx, wri->zip);
- fz_always(ctx)
- fz_drop_pixmap(ctx, wri->pixmap);
- fz_catch(ctx)
- fz_rethrow(ctx);
+ fz_drop_zip_writer(ctx, wri->zip);
+ fz_drop_pixmap(ctx, wri->pixmap);
}
fz_document_writer *
@@ -67,7 +71,8 @@ fz_new_cbz_writer(fz_context *ctx, const char *path, const char *options)
wri = fz_malloc_struct(ctx, fz_cbz_writer);
wri->super.begin_page = cbz_begin_page;
wri->super.end_page = cbz_end_page;
- wri->super.close = cbz_close;
+ wri->super.close_writer = cbz_close_writer;
+ wri->super.drop_writer = cbz_drop_writer;
fz_try(ctx)
{