diff options
author | Steve Fryatt <steve@stevefryatt.org.uk> | 2010-07-14 23:03:08 +0000 |
---|---|---|
committer | Steve Fryatt <steve@stevefryatt.org.uk> | 2010-07-14 23:03:08 +0000 |
commit | 57ddeea19b5ce254d08668a778de5f299670b098 (patch) | |
tree | d53f32b24d02c87db89f39262b63af8ca913bf52 /riscos | |
parent | a182a36067d962802a49921a735dce53ceb5afb8 (diff) | |
download | netsurf-57ddeea19b5ce254d08668a778de5f299670b098.tar.gz netsurf-57ddeea19b5ce254d08668a778de5f299670b098.tar.bz2 |
Work around apparent register corruption after printing.
svn path=/trunk/netsurf/; revision=10640
Diffstat (limited to 'riscos')
-rw-r--r-- | riscos/print.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/riscos/print.c b/riscos/print.c index ba22d4926..b35a5b501 100644 --- a/riscos/print.c +++ b/riscos/print.c @@ -21,6 +21,7 @@ #include <assert.h> #include <string.h> +#include "swis.h" #include "oslib/font.h" #include "oslib/hourglass.h" #include "oslib/osfile.h" @@ -694,8 +695,14 @@ bool print_document(struct gui_window *g, const char *filename) print_active = false; ro_gui_current_redraw_gui = 0; - /* clean up */ - error = xpdriver_end_jobw(fhandle); + /* clean up + * + * Call PDriver_EndJob via _swix() so that r9 is preserved. This + * prevents a crash if the SWI corrupts it on exit (as seems to + * happen on some versions of RISC OS 6). + */ + + error = (os_error *) _swix(PDriver_EndJob, _IN(0), (int) fhandle); if (error) { LOG(("xpdriver_end_jobw: 0x%x: %s", error->errnum, error->errmess)); |