SmartOS does not line buffer stderr by default, or at least that is the behavior on the Node project Jenkins server. Force line buffering. This resolves the flakiness observed on SmartOS for test-debug-signal-cluster. PR-URL: https://github.com/nodejs/node/pull/3701 Fixes: https://github.com/nodejs/node/issues/2476 Refs: https://github.com/nodejs/node/pull/3615 Reviewed-By: Johan Bergström <bugs@bergstroem.nu> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
#include "node.h"
|
|
|
|
#ifdef _WIN32
|
|
int wmain(int argc, wchar_t *wargv[]) {
|
|
// Convert argv to to UTF8
|
|
char** argv = new char*[argc];
|
|
for (int i = 0; i < argc; i++) {
|
|
// Compute the size of the required buffer
|
|
DWORD size = WideCharToMultiByte(CP_UTF8,
|
|
0,
|
|
wargv[i],
|
|
-1,
|
|
nullptr,
|
|
0,
|
|
nullptr,
|
|
nullptr);
|
|
if (size == 0) {
|
|
// This should never happen.
|
|
fprintf(stderr, "Could not convert arguments to utf8.");
|
|
exit(1);
|
|
}
|
|
// Do the actual conversion
|
|
argv[i] = new char[size];
|
|
DWORD result = WideCharToMultiByte(CP_UTF8,
|
|
0,
|
|
wargv[i],
|
|
-1,
|
|
argv[i],
|
|
size,
|
|
nullptr,
|
|
nullptr);
|
|
if (result == 0) {
|
|
// This should never happen.
|
|
fprintf(stderr, "Could not convert arguments to utf8.");
|
|
exit(1);
|
|
}
|
|
}
|
|
// Now that conversion is done, we can finally start.
|
|
return node::Start(argc, argv);
|
|
}
|
|
#else
|
|
// UNIX
|
|
int main(int argc, char *argv[]) {
|
|
setvbuf(stderr, NULL, _IOLBF, 1024);
|
|
return node::Start(argc, argv);
|
|
}
|
|
#endif
|