[hle/am] make Service::Process move-only to fix #3908 KProcess use-after-free

This commit is contained in:
xbzk 2026-06-27 11:11:40 -03:00
parent 0d6a2158f0
commit dbb6a76dc0

View file

@ -6,6 +6,8 @@
#pragma once #pragma once
#include <utility>
#include "common/common_types.h" #include "common/common_types.h"
namespace Core { namespace Core {
@ -28,6 +30,15 @@ public:
inline explicit Process(Core::System& system) noexcept : m_system(system) {} inline explicit Process(Core::System& system) noexcept : m_system(system) {}
inline ~Process() { this->Finalize(); } inline ~Process() { this->Finalize(); }
Process(const Process&) = delete;
Process& operator=(const Process&) = delete;
Process& operator=(Process&&) = delete;
inline Process(Process&& other) noexcept
: m_system(other.m_system), m_process(std::exchange(other.m_process, nullptr)),
m_main_thread_stack_size(std::exchange(other.m_main_thread_stack_size, 0)),
m_main_thread_priority(std::exchange(other.m_main_thread_priority, 0)),
m_process_started(std::exchange(other.m_process_started, false)) {}
bool Initialize(Loader::AppLoader& loader, Loader::ResultStatus& out_load_result); bool Initialize(Loader::AppLoader& loader, Loader::ResultStatus& out_load_result);
void Finalize(); void Finalize();