summaryrefslogtreecommitdiff
path: root/os
diff options
context:
space:
mode:
Diffstat (limited to 'os')
-rw-r--r--os/backtrace.c7
-rw-r--r--os/osinit.c2
-rw-r--r--os/xdmcp.c7
3 files changed, 14 insertions, 2 deletions
diff --git a/os/backtrace.c b/os/backtrace.c
index fcc8274e4..c11552125 100644
--- a/os/backtrace.c
+++ b/os/backtrace.c
@@ -369,6 +369,13 @@ xorg_backtrace(void)
return;
}
+/* Cygwin-specific reporter script which uses exec_wrapper */
+void
+xorg_crashreport(void)
+{
+ return xorg_backtrace_exec_wrapper(BINDIR "/xorg-crashreport");
+}
+
#endif
#endif
#endif
diff --git a/os/osinit.c b/os/osinit.c
index 2791b53f2..c59b94bed 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -144,6 +144,8 @@ OsSigHandler(int signo)
/* log, cleanup, and abort */
xorg_backtrace();
+ xorg_crashreport();
+
FatalError("Caught signal %d (%s). Server aborting\n",
signo, strsignal(signo));
}
diff --git a/os/xdmcp.c b/os/xdmcp.c
index 99616d94b..c5204adfb 100644
--- a/os/xdmcp.c
+++ b/os/xdmcp.c
@@ -1409,8 +1409,11 @@ recv_alive_msg(unsigned length)
static void
XdmcpFatal(const char *type, ARRAY8Ptr status)
{
- FatalError("XDMCP fatal error: %s %*.*s\n", type,
- status->length, status->length, status->data);
+ char *text = malloc(status->length + 1);
+ strncpy(text, status->data, status->length);
+ text[status->length] = 0;
+ FatalError("XDMCP fatal error: %s %s\n", type, text);
+ free(text);
}
static void