summaryrefslogtreecommitdiff
path: root/amiga/print.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2010-04-10 19:36:53 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2010-04-10 19:36:53 +0000
commite2225502e98ab05f11ea78e405e2cfdedf93defe (patch)
tree5b399d9bef12e1356fc78966a71e436193e11032 /amiga/print.c
parentb0f1b7b1704fb42675fff58a35a7ac1707bec2b2 (diff)
downloadnetsurf-e2225502e98ab05f11ea78e405e2cfdedf93defe.tar.gz
netsurf-e2225502e98ab05f11ea78e405e2cfdedf93defe.tar.bz2
Avoid crash
svn path=/trunk/netsurf/; revision=10343
Diffstat (limited to 'amiga/print.c')
-rw-r--r--amiga/print.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/amiga/print.c b/amiga/print.c
index 9f18a76d8..fe399be77 100644
--- a/amiga/print.c
+++ b/amiga/print.c
@@ -58,6 +58,7 @@ bool ami_print_next_page(void);
void ami_print_end(void);
bool ami_print_dump(void);
void ami_print_progress(void);
+void ami_print_close_device(void);
const struct printer amiprinter = {
&amiplot,
@@ -397,7 +398,12 @@ void ami_print(struct hlcache_handle *c, int copies)
ami_print_info.ps->page_height = ami_print_info.PED->ped_MaxYDots;
ami_print_info.ps->scale = scale;
- print_set_up(c, &amiprinter, ami_print_info.ps, &height);
+ if(!print_set_up(c, &amiprinter, ami_print_info.ps, &height))
+ {
+ warn_user("PrintError","print_set_up() returned false");
+ ami_print_close_device();
+ return;
+ }
height *= ami_print_info.ps->scale;
ami_print_info.pages = height / ami_print_info.ps->page_height;
@@ -482,6 +488,11 @@ void ami_print_end(void)
DisposeObject(ami_print_info.objects[OID_MAIN]);
glob = &browserglob;
+ ami_print_close_device();
+}
+
+void ami_print_close_device(void)
+{
CloseDevice(ami_print_info.PReq);
FreeSysObject(ASOT_IOREQUEST,ami_print_info.PReq);
}