A Unix path can contain any bytes (commonly thought of as characters) except 0. A file name can contain any bytes except 0 and 47. In a lot of cases, the bytes can be decoded as valid UTF-8; but that's not universally true. It's just not right to throw arbitrary bytes from the FS at Gfx::Painter
/Gfx::Font
an expect it to deal.
USERSPACE(26) ASSERTION FAILED: m_ptr[offset] >> 6 == 2
../AK/Utf8View.cpp:210
[FileManager(26:27)]: Terminating due to signal 6
[FinalizerTask(3:3)]: 0xdeadc0de Kernel::Scheduler::switch_now() +64
0xdeadc0de Kernel::Scheduler::yield() +85
0xdeadc0de Kernel::Thread::yield_without_holding_big_lock() +36
0xdeadc0de Kernel::Process::do_killself(int) +191
0xdeadc0de Kernel::Process::sys$kill(int, int) +258
0xdeadc0de syscall_handler +1158
0xdeadc0de syscall_asm_entry +29
0x080c9fac raise +22
0x080480bd +13
0x080c6b2c tolower +0
0x080dbf53 AK::Utf8CodepointIterator::operator*() const +147
0x080a2bdd Gfx::Font::width(AK::Utf8View const&) const +73
0x080a2c34 Gfx::Font::width(AK::StringView const&) const +30
0x08056f83 GUI::AbstractTableView::update_column_sizes() +491
0x08057dc0 GUI::AbstractTableView::did_update_model(unsigned int) +30
0x08078a33 GUI::Model::for_each_view(AK::Function<void (GUI::AbstractView&)>) +109
0x08078a8a GUI::Model::did_update(unsigned int) +66
0x0807d0cf GUI::SortingProxyModel::resort() +271
0x08078a62 GUI::Model::did_update(unsigned int) +26
0x0806f1d2 GUI::FileSystemModel::update() +118
0x0806d035 GUI::FileSystemModel::set_root_path(AK::StringView const&) +53
0x0804c5c6 DirectoryView::handle_activation(GUI::ModelIndex const&) +208
0x080583d7 GUI::AbstractView::activate_selected() +93
0x08058486 GUI::AbstractView::doubleclick_event(GUI::MouseEvent&) +142
0x080c48d8 Core::Object::dispatch_event(Core::Event&, Core::Object*) +74
0x0809226c GUI::Window::event(Core::Event&) +1070
0x080c48d8 Core::Object::dispatch_event(Core::Event&, Core::Object*) +74
0x080bef13 Core::EventLoop::pump(Core::EventLoop::WaitMode) +307
0x080bf091 Core::EventLoop::exec() +43
0x0805b45f GUI::Application::exec() +37
0x0804b49b main +12432
0x0804bfae _start +94
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too