aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/sm/sm.cpp
diff options
context:
space:
mode:
authorSubv <subv2112@gmail.com>2017-09-24 00:12:58 -0500
committerSubv <subv2112@gmail.com>2017-09-24 00:12:58 -0500
commit0b33e36292ca44151da32c7866e4c4394add564b (patch)
treeebe77b8f7d81b2c026dbe2276f383d72cc949bfe /src/core/hle/service/sm/sm.cpp
parenta7758b0b36f50b0d0f20149134551f4dfee01442 (diff)
HLE/SRV: Implemented RegisterService.
Now system modules can do more than just crash immediately on startup.
Diffstat (limited to 'src/core/hle/service/sm/sm.cpp')
-rw-r--r--src/core/hle/service/sm/sm.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp
index 5e7fc68f9..854ab9a05 100644
--- a/src/core/hle/service/sm/sm.cpp
+++ b/src/core/hle/service/sm/sm.cpp
@@ -36,6 +36,10 @@ ResultVal<Kernel::SharedPtr<Kernel::ServerPort>> ServiceManager::RegisterService
std::string name, unsigned int max_sessions) {
CASCADE_CODE(ValidateServiceName(name));
+
+ if (registered_services.find(name) != registered_services.end())
+ return ERR_ALREADY_REGISTERED;
+
Kernel::SharedPtr<Kernel::ServerPort> server_port;
Kernel::SharedPtr<Kernel::ClientPort> client_port;
std::tie(server_port, client_port) = Kernel::ServerPort::CreatePortPair(max_sessions, name);