summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2008-06-07 19:00:46 +0000
committerJames Bursa <james@netsurf-browser.org>2008-06-07 19:00:46 +0000
commita00bc796653cb6d89072f6a3f3f5f48c56ba8310 (patch)
treee1dbd1684b28316b515843f5f3fff8fd24d48c3a
parent5e393e19ceaa1fdd698df6f5f3217091e752d3b4 (diff)
downloadnetsurf-a00bc796653cb6d89072f6a3f3f5f48c56ba8310.tar.gz
netsurf-a00bc796653cb6d89072f6a3f3f5f48c56ba8310.tar.bz2
Save WimpSlot too when NetSurf$CoreDump is set and NetSurf crashes.
svn path=/trunk/netsurf/; revision=4298
-rw-r--r--riscos/gui.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/riscos/gui.c b/riscos/gui.c
index 7f78286d3..803047257 100644
--- a/riscos/gui.c
+++ b/riscos/gui.c
@@ -1,6 +1,6 @@
/*
* Copyright 2003 Phil Mellor <monkeyson@users.sourceforge.net>
- * Copyright 2004-2007 James Bursa <bursa@users.sourceforge.net>
+ * Copyright 2004-2008 James Bursa <bursa@users.sourceforge.net>
* Copyright 2003 John M Bell <jmb202@ecs.soton.ac.uk>
* Copyright 2005 Richard Wilson <info@tinct.net>
* Copyright 2004 Andrew Timmins <atimmins@blueyonder.co.uk>
@@ -30,6 +30,7 @@
#include <string.h>
#include <time.h>
#include <features.h>
+#include <unixlib/sigstate.h>
#include <unixlib/local.h>
#include <curl/curl.h>
#include <oslib/font.h>
@@ -150,6 +151,7 @@ int __feature_imagefs_is_file = 1; /**< For UnixLib. */
/* default filename handling */
int __riscosify_control = __RISCOSIFY_NO_SUFFIX |
__RISCOSIFY_NO_REVERSE_SUFFIX;
+extern int __dynamic_num;
const char * NETSURF_DIR;
@@ -848,19 +850,26 @@ void ro_gui_signal(int sig)
__write_backtrace(sig);
- /* save DA to a file if NetSurf$CoreDump exists */
+ /* save WimpSlot and DA to files if NetSurf$CoreDump exists */
int used;
xos_read_var_val_size("NetSurf$CoreDump", 0, 0, &used, 0, 0);
if (used) {
- extern int __dynamic_num;
+ int curr_slot;
+ xwimp_slot_size(-1, -1, &curr_slot, 0, 0);
+ LOG(("saving WimpSlot, size 0x%x", curr_slot));
+ xosfile_save("$.NetSurf_Slot", 0x8000, 0,
+ (byte *) 0x8000,
+ (byte *) 0x8000 + curr_slot);
+
if (__dynamic_num != -1) {
int size;
byte *base_address;
xosdynamicarea_read(__dynamic_num, &size,
&base_address, 0, 0, 0, 0, 0);
- LOG(("saving DA %i %p %x\n", __dynamic_num,
+ LOG(("saving DA %i, base %p, size 0x%x",
+ __dynamic_num,
base_address, size));
- xosfile_save("$.netsurf_core",
+ xosfile_save("$.NetSurf_DA",
(bits) base_address, 0,
base_address,
base_address + size);