diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-02-21 13:47:48 +0100 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-02-21 13:47:48 +0100 |
| commit | b6238d6df76ecbef12f295ee0ef702e18542f109 (patch) | |
| tree | cda30024a5d825e87b28609d84076277616aed94 /src/core/file_sys/vfs/vfs_real.cpp | |
| parent | f94bae10f27eb60a9a51bf614c28eba4fbd63d3d (diff) | |
[vfs] fix crash at dtor() time (#3593)
Not very happy with the "solution"
Either way, this affected FBSD where opening then closing the emu would result in a crash, always.
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3593
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src/core/file_sys/vfs/vfs_real.cpp')
| -rw-r--r-- | src/core/file_sys/vfs/vfs_real.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/core/file_sys/vfs/vfs_real.cpp b/src/core/file_sys/vfs/vfs_real.cpp index 4199667171..2c3cb26907 100644 --- a/src/core/file_sys/vfs/vfs_real.cpp +++ b/src/core/file_sys/vfs/vfs_real.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project @@ -52,7 +52,9 @@ constexpr FS::FileAccessMode ModeFlagsToFileAccessMode(OpenMode mode) { } // Anonymous namespace RealVfsFilesystem::RealVfsFilesystem() : VfsFilesystem(nullptr) {} -RealVfsFilesystem::~RealVfsFilesystem() = default; +RealVfsFilesystem::~RealVfsFilesystem() { + in_dtor = true; +} std::string RealVfsFilesystem::GetName() const { return "Real"; @@ -224,6 +226,9 @@ std::unique_lock<std::mutex> RealVfsFilesystem::RefreshReference(const std::stri } void RealVfsFilesystem::DropReference(std::unique_ptr<FileReference>&& reference) { + if (in_dtor) + return; + std::scoped_lock lk{list_lock}; // Remove from list. |
