diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2010-04-10 19:36:53 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2010-04-10 19:36:53 +0000 |
commit | e2225502e98ab05f11ea78e405e2cfdedf93defe (patch) | |
tree | 5b399d9bef12e1356fc78966a71e436193e11032 /amiga/print.c | |
parent | b0f1b7b1704fb42675fff58a35a7ac1707bec2b2 (diff) | |
download | netsurf-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.c | 13 |
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); } |