AK: Make vout() log to debug instead of VERIFY()'ing

In case the write was to stderr/stdout, and it just so happened to fail
because of an issue like "the pty is gone", VERIFY() would end up
calling vout() back to write to stderr, which would then fail forever
until the stack is exhausted.
"Fixes" the issue where the Shell would crash in horrible ways when the
terminal is closed.
This commit is contained in:
Ali Mohammad Pur 2021-05-19 10:18:06 +04:30 committed by Andreas Kling
parent ed1800547e
commit 73cb566041

View file

@ -20,6 +20,7 @@
# include <Kernel/Thread.h>
#else
# include <stdio.h>
# include <string.h>
#endif
namespace AK {
@ -608,7 +609,10 @@ void vout(FILE* file, StringView fmtstr, TypeErasedFormatParams params, bool new
const auto string = builder.string_view();
const auto retval = ::fwrite(string.characters_without_null_termination(), 1, string.length(), file);
VERIFY(static_cast<size_t>(retval) == string.length());
if (static_cast<size_t>(retval) != string.length()) {
auto error = ferror(file);
dbgln("vout() failed ({} written out of {}), error was {} ({})", retval, string.length(), error, strerror(error));
}
}
#endif