Compare commits

..

2 Commits

Author SHA1 Message Date
b316e3b3b7
Print stack trace on assertion fail
All checks were successful
continuous-integration/drone/push Build is passing
2022-12-16 20:49:09 +01:00
da39ba33a9
Move OwnedStringView::operator[] out of line 2022-12-16 20:48:58 +01:00
3 changed files with 9 additions and 5 deletions

View File

@ -118,10 +118,12 @@ static bool g_check_already_failed = false;
[[noreturn]] bool __check_failed(const char* file, const char* line, const char* func, const char* expr)
{
CPU::disable_interrupts();
if (!g_check_already_failed)
{ // Avoid endlessly failing when trying to report a failed check.
g_check_already_failed = true;
kerrorln("ERROR: Check failed at %s:%s, in %s: %s", file, line, func, expr);
CPU::print_stack_trace();
}
CPU::efficient_halt();
}

View File

@ -22,11 +22,7 @@ class OwnedStringView
return m_length;
}
const char& operator[](usize index) const
{
expect(index < m_length, "OwnedStringView: index out of range");
return m_string[index];
}
const char& operator[](usize) const;
private:
char* m_string{nullptr};

View File

@ -33,4 +33,10 @@ Result<OwnedStringView> OwnedStringView::clone() const
if (!c_str) return err(ENOMEM);
return OwnedStringView{c_str};
}
const char& OwnedStringView::operator[](usize index) const
{
expect(index < m_length, "index out of range");
return m_string[index];
}