aboutsummaryrefslogtreecommitdiff
path: root/src/core/file_sys/vfs/vfs_real.cpp
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-02-21 13:47:48 +0100
committercrueter <crueter@eden-emu.dev>2026-02-21 13:47:48 +0100
commitb6238d6df76ecbef12f295ee0ef702e18542f109 (patch)
treecda30024a5d825e87b28609d84076277616aed94 /src/core/file_sys/vfs/vfs_real.cpp
parentf94bae10f27eb60a9a51bf614c28eba4fbd63d3d (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.cpp9
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.