Make stderr fully buffered on Windows to improve named performance when
it is logging to stderr, which happens e.g. in system tests. Note that:
- line buffering (_IOLBF) is unavailable on Windows,
- fflush() is called anyway after each log message gets written to the
default stderr logging channels created by libisc.
(cherry picked from commit
c72da3497d821c06a9b641b1c8544f957c726238)
(void) ProfilerStart(NULL);
#endif
+#ifdef WIN32
+ /*
+ * Prevent unbuffered I/O from crippling named performance on Windows
+ * when it is logging to stderr (e.g. in system tests). Use full
+ * buffering (_IOFBF) as line buffering (_IOLBF) is unavailable on
+ * Windows and fflush() is called anyway after each log message gets
+ * written to the default stderr logging channels created by libisc.
+ */
+ setvbuf(stderr, NULL, _IOFBF, BUFSIZ);
+#endif
+
/*
* Record version in core image.
* strings named.core | grep "named version:"