mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-05-24 19:54:22 -04:00
abort/error: print backtrace, abuse templates, overhaul result/diag (macos not done yet)
This commit is contained in:
parent
18168d54c3
commit
646f84bad1
118 changed files with 2843 additions and 369 deletions
|
@ -45,11 +45,26 @@ namespace ams::diag::impl {
|
|||
}
|
||||
|
||||
void VLogImpl(const LogMetaData &meta, const char *fmt, std::va_list vl) {
|
||||
#if defined(ATMOSPHERE_OS_HORIZON)
|
||||
/* Print to stack buffer. */
|
||||
char msg_buffer[DebugPrintBufferLength];
|
||||
|
||||
/* TODO: VFormatString using utf-8 printer. */
|
||||
const size_t len = util::VSNPrintf(msg_buffer, sizeof(msg_buffer), fmt, vl);
|
||||
#else
|
||||
/* Print to allocated buffer. */
|
||||
std::va_list cvl;
|
||||
va_copy(cvl, vl);
|
||||
const auto out_len = util::TVSNPrintf(nullptr, 0, fmt, cvl) + 1;
|
||||
va_end(cvl);
|
||||
|
||||
char *msg_buffer = static_cast<char *>(std::malloc(out_len));
|
||||
AMS_ABORT_UNLESS(msg_buffer != nullptr);
|
||||
ON_SCOPE_EXIT { std::free(msg_buffer); };
|
||||
|
||||
/* TODO: VFormatString using utf-8 printer. */
|
||||
const size_t len = util::TVSNPrintf(msg_buffer, out_len, fmt, vl);
|
||||
#endif
|
||||
|
||||
/* Call log observer. */
|
||||
CallPrintDebugString()(meta, msg_buffer, len, true, true);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue