From d47d0ce2d9314768aedff8398871e51238789d04 Mon Sep 17 00:00:00 2001
From: Mateo de Mayo <mateo.demayo@collabora.com>
Date: Wed, 31 Aug 2022 10:00:45 -0300
Subject: [PATCH] u/logging: Log to stderr in Windows

---
 doc/changes/auxiliary/mr.1475.md   |  1 +
 src/xrt/auxiliary/util/u_logging.c | 15 +++++++++------
 2 files changed, 10 insertions(+), 6 deletions(-)
 create mode 100644 doc/changes/auxiliary/mr.1475.md

diff --git a/doc/changes/auxiliary/mr.1475.md b/doc/changes/auxiliary/mr.1475.md
new file mode 100644
index 000000000..6af1a0ece
--- /dev/null
+++ b/doc/changes/auxiliary/mr.1475.md
@@ -0,0 +1 @@
+u/logging: Log to stderr in Windows.
diff --git a/src/xrt/auxiliary/util/u_logging.c b/src/xrt/auxiliary/util/u_logging.c
index 853846fd6..97e4b0a5d 100644
--- a/src/xrt/auxiliary/util/u_logging.c
+++ b/src/xrt/auxiliary/util/u_logging.c
@@ -123,7 +123,7 @@ u_log(const char *file, int line, const char *func, enum u_logging_level level,
 
 	char buf[16384] = {0};
 
-	int remainingBuffer = sizeof(buf) - 2;
+	int remainingBuffer = sizeof(buf) - 2; // 2 for \n\0
 	int printed = print_prefix(remainingBuffer, buf, func, level);
 
 	va_list args;
@@ -131,10 +131,10 @@ u_log(const char *file, int line, const char *func, enum u_logging_level level,
 	DISPATCH_SINK(file, line, func, level, format, args);
 	printed += vsprintf_s(buf + printed, remainingBuffer - printed, format, args);
 	va_end(args);
-	*(buf + printed) = '\n';
-	printed++;
-	*(buf + printed) = '\0';
+	buf[printed++] = '\n';
+	buf[printed++] = '\0';
 	OutputDebugStringA(buf);
+	fprintf(stderr, "%s", buf);
 }
 
 void
@@ -149,15 +149,18 @@ u_log_xdev(const char *file,
 
 	char buf[16384] = {0};
 
-	int remainingBuffer = sizeof(buf) - 1;
+	int remainingBuffer = sizeof(buf) - 2; // 2 for \n\0
 	int printed = print_prefix(remainingBuffer, buf, func, level);
 
 	va_list args;
 	va_start(args, format);
 	DISPATCH_SINK(file, line, func, level, format, args);
-	vsprintf_s(buf + printed, remainingBuffer - printed, format, args);
+	printed += vsprintf_s(buf + printed, remainingBuffer - printed, format, args);
 	va_end(args);
+	buf[printed++] = '\n';
+	buf[printed++] = '\0';
 	OutputDebugStringA(buf);
+	fprintf(stderr, "%s", buf);
 }