65 lines
1.7 KiB
Text
65 lines
1.7 KiB
Text
$OpenBSD: patch-rts_RtsMessages_c,v 1.1.1.1 2023/03/09 18:59:42 kili Exp $
|
|
|
|
The debug message function has to return the number of bytes written
|
|
(like printf(3)), to allow killing a %n format specifier in one in
|
|
one invocation of statsPrintf() in report_summary() (rts/Stats.c).
|
|
|
|
Index: rts/RtsMessages.c
|
|
--- rts/RtsMessages.c.orig
|
|
+++ rts/RtsMessages.c
|
|
@@ -36,7 +36,7 @@
|
|
|
|
// Default to the stdio implementation of these hooks.
|
|
RtsMsgFunction *fatalInternalErrorFn = rtsFatalInternalErrorFn;
|
|
-RtsMsgFunction *debugMsgFn = rtsDebugMsgFn;
|
|
+RtsMsgFunctionRetLen *debugMsgFn = rtsDebugMsgFn;
|
|
RtsMsgFunction *errorMsgFn = rtsErrorMsgFn;
|
|
RtsMsgFunction *sysErrorMsgFn = rtsSysErrorMsgFn;
|
|
|
|
@@ -102,10 +102,10 @@ debugBelch(const char*s, ...)
|
|
va_end(ap);
|
|
}
|
|
|
|
-void
|
|
+int
|
|
vdebugBelch(const char*s, va_list ap)
|
|
{
|
|
- (*debugMsgFn)(s,ap);
|
|
+ return (*debugMsgFn)(s,ap);
|
|
}
|
|
|
|
/* -----------------------------------------------------------------------------
|
|
@@ -285,16 +285,16 @@ rtsSysErrorMsgFn(const char *s, va_list ap)
|
|
#endif
|
|
}
|
|
|
|
-void
|
|
+int
|
|
rtsDebugMsgFn(const char *s, va_list ap)
|
|
{
|
|
+ int r;
|
|
#if defined(mingw32_HOST_OS)
|
|
/* Ensure we're in text mode so newlines get encoded properly. */
|
|
int mode = _setmode (_fileno(stderr), _O_TEXT);
|
|
if (isGUIApp())
|
|
{
|
|
char buf[BUFSIZE];
|
|
- int r;
|
|
|
|
r = vsnprintf(buf, BUFSIZE, s, ap);
|
|
if (r > 0 && r < BUFSIZE) {
|
|
@@ -305,12 +305,13 @@ rtsDebugMsgFn(const char *s, va_list ap)
|
|
#endif
|
|
{
|
|
/* don't fflush(stdout); WORKAROUND bug in Linux glibc */
|
|
- vfprintf(stderr, s, ap);
|
|
+ r = vfprintf(stderr, s, ap);
|
|
fflush(stderr);
|
|
}
|
|
#if defined(mingw32_HOST_OS)
|
|
_setmode (_fileno(stderr), mode);
|
|
#endif
|
|
+ return r;
|
|
}
|
|
|
|
|