summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index 1cac1d0c9..5ebe2eca4 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -67,10 +67,13 @@ ResultCode HLERequestContext::PopulateFromIncomingCommandBuffer(const u32_le* sr
67 ASSERT(i + num_handles <= command_size); // TODO(yuriks): Return error 67 ASSERT(i + num_handles <= command_size); // TODO(yuriks): Return error
68 for (u32 j = 0; j < num_handles; ++j) { 68 for (u32 j = 0; j < num_handles; ++j) {
69 Handle handle = src_cmdbuf[i]; 69 Handle handle = src_cmdbuf[i];
70 SharedPtr<Object> object = src_table.GetGeneric(handle); 70 SharedPtr<Object> object = nullptr;
71 ASSERT(object != nullptr); // TODO(yuriks): Return error 71 if (handle != 0) {
72 if (descriptor == IPC::DescriptorType::MoveHandle) { 72 object = src_table.GetGeneric(handle);
73 src_table.Close(handle); 73 ASSERT(object != nullptr); // TODO(yuriks): Return error
74 if (descriptor == IPC::DescriptorType::MoveHandle) {
75 src_table.Close(handle);
76 }
74 } 77 }
75 78
76 cmd_buf[i++] = AddOutgoingHandle(std::move(object)); 79 cmd_buf[i++] = AddOutgoingHandle(std::move(object));
@@ -112,9 +115,11 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(u32_le* dst_cmdbuf, P
112 ASSERT(i + num_handles <= command_size); 115 ASSERT(i + num_handles <= command_size);
113 for (u32 j = 0; j < num_handles; ++j) { 116 for (u32 j = 0; j < num_handles; ++j) {
114 SharedPtr<Object> object = GetIncomingHandle(cmd_buf[i]); 117 SharedPtr<Object> object = GetIncomingHandle(cmd_buf[i]);
115 118 Handle handle = 0;
116 // TODO(yuriks): Figure out the proper error handling for if this fails 119 if (object != nullptr) {
117 Handle handle = dst_table.Create(object).Unwrap(); 120 // TODO(yuriks): Figure out the proper error handling for if this fails
121 handle = dst_table.Create(object).Unwrap();
122 }
118 dst_cmdbuf[i++] = handle; 123 dst_cmdbuf[i++] = handle;
119 } 124 }
120 break; 125 break;