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) [[noreturn]] bool __check_failed(const char* file, const char* line, const char* func, const char* expr)
{ {
CPU::disable_interrupts();
if (!g_check_already_failed) if (!g_check_already_failed)
{ // Avoid endlessly failing when trying to report a failed check. { // Avoid endlessly failing when trying to report a failed check.
g_check_already_failed = true; g_check_already_failed = true;
kerrorln("ERROR: Check failed at %s:%s, in %s: %s", file, line, func, expr); kerrorln("ERROR: Check failed at %s:%s, in %s: %s", file, line, func, expr);
CPU::print_stack_trace();
} }
CPU::efficient_halt(); CPU::efficient_halt();
} }

View File

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

View File

@ -34,3 +34,9 @@ Result<OwnedStringView> OwnedStringView::clone() const
return OwnedStringView{c_str}; return OwnedStringView{c_str};
} }
const char& OwnedStringView::operator[](usize index) const
{
expect(index < m_length, "index out of range");
return m_string[index];
}