summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2005-12-11 21:55:25 +0000
committerJames Bursa <james@netsurf-browser.org>2005-12-11 21:55:25 +0000
commit8552f3481625ebc278cf693d33c9dba561c5d9ef (patch)
tree68aeee2859008c5976899ce9768a8b06f79396a4 /riscos
parent666cdaf8dd6f92c552bf63ead14ab16aa0193a0b (diff)
downloadnetsurf-8552f3481625ebc278cf693d33c9dba561c5d9ef.tar.gz
netsurf-8552f3481625ebc278cf693d33c9dba561c5d9ef.tar.bz2
[project @ 2005-12-11 21:55:25 by bursa]
Show an error box when assert() fails instead of exiting suddenly. svn path=/import/netsurf/; revision=1897
Diffstat (limited to 'riscos')
-rw-r--r--riscos/assert.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/riscos/assert.c b/riscos/assert.c
new file mode 100644
index 000000000..96309bcef
--- /dev/null
+++ b/riscos/assert.c
@@ -0,0 +1,46 @@
+/*
+ * This file is part of NetSurf, http://netsurf.sourceforge.net/
+ * Licensed under the GNU General Public License,
+ * http://www.opensource.org/licenses/gpl-license
+ * Copyright 2005 James Bursa <bursa@users.sourceforge.net>
+ */
+
+/** \file
+ * Assert reporting (RISC OS implementation).
+ */
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <oslib/wimp.h>
+
+
+/**
+ * Report an assert() failure and exit.
+ */
+
+void __assert2(const char *expr, const char *function, const char *file,
+ int line)
+{
+ static const os_error error = { 1, "NetSurf has detected a serious "
+ "error and must exit. Please submit a bug report, "
+ "attaching the browser log file." };
+
+ fprintf(stderr, "\n\"%s\", line %d: %s%sAssertion failed: %s\n",
+ file, line,
+ function ? function : "",
+ function ? ": " : "",
+ expr);
+ fflush(stderr);
+
+ xwimp_report_error_by_category(&error,
+ wimp_ERROR_BOX_GIVEN_CATEGORY |
+ wimp_ERROR_BOX_CATEGORY_ERROR <<
+ wimp_ERROR_BOX_CATEGORY_SHIFT,
+ "NetSurf", "!netsurf",
+ (osspriteop_area *) 1, "Quit", 0);
+
+ xos_cli("Filer_Run <Wimp$ScrapDir>.WWW.NetSurf.Log");
+
+ abort();
+}