diff options
author | Simon Marlow <marlowsd@gmail.com> | 2010-02-26 09:32:15 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2010-02-26 09:32:15 +0000 |
commit | 91bfa780ddd229cff6c3d86a8f05e3898ef65e53 (patch) | |
tree | 97d9e42d73089f9b7a8aadfc3435a45b97d61227 /rts/Trace.c | |
parent | b1b95df69d97f279018b08d9e7c672318055bac4 (diff) | |
download | haskell-91bfa780ddd229cff6c3d86a8f05e3898ef65e53.tar.gz |
Fix crash when using printf format specifiers in traceEvent (#3874)
Diffstat (limited to 'rts/Trace.c')
-rw-r--r-- | rts/Trace.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/rts/Trace.c b/rts/Trace.c index a1da9911a7..c8a0285837 100644 --- a/rts/Trace.c +++ b/rts/Trace.c @@ -299,21 +299,29 @@ void trace_(char *msg, ...) va_end(ap); } -void traceUserMsg(Capability *cap, char *msg) +static void traceFormatUserMsg(Capability *cap, char *msg, ...) { + va_list ap; + va_start(ap,msg); + #ifdef DEBUG if (RtsFlags.TraceFlags.tracing == TRACE_STDERR) { - traceCap_stderr(cap, msg, NULL); + traceCap_stderr(cap, msg, ap); } else #endif { if (eventlog_enabled) { - postUserMsg(cap, msg); + postUserMsg(cap, msg, ap); } } dtraceUserMsg(cap->no, msg); } +void traceUserMsg(Capability *cap, char *msg) +{ + traceFormatUserMsg(cap, "%s", msg); +} + void traceThreadStatus_ (StgTSO *tso USED_IF_DEBUG) { #ifdef DEBUG |