aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/ns
diff options
context:
space:
mode:
authorliamwhite <liamwhite@users.noreply.github.com>2023-09-24 10:50:38 -0400
committerGitHub <noreply@github.com>2023-09-24 10:50:38 -0400
commit37a4a6751a0c2fe1556bcea651dbe30a008ba166 (patch)
tree3d4ef39937966faf7bcb11efe42ba9d7f292257d /src/core/hle/service/ns
parent93a1cd75fecba13600bf5d27118da0e7cc23f815 (diff)
parentbb28f4a0c4f457bc19ecfe550437644ebbc21a47 (diff)
Merge pull request #11569 from german77/lle_applet
service: am: Add support for LLE Mii Edit Applet
Diffstat (limited to 'src/core/hle/service/ns')
-rw-r--r--src/core/hle/service/ns/iplatform_service_manager.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/core/hle/service/ns/iplatform_service_manager.cpp b/src/core/hle/service/ns/iplatform_service_manager.cpp
index 6c2f5e70b..46268be95 100644
--- a/src/core/hle/service/ns/iplatform_service_manager.cpp
+++ b/src/core/hle/service/ns/iplatform_service_manager.cpp
@@ -144,7 +144,7 @@ IPlatformServiceManager::IPlatformServiceManager(Core::System& system_, const ch
{3, &IPlatformServiceManager::GetSharedMemoryAddressOffset, "GetSharedMemoryAddressOffset"},
{4, &IPlatformServiceManager::GetSharedMemoryNativeHandle, "GetSharedMemoryNativeHandle"},
{5, &IPlatformServiceManager::GetSharedFontInOrderOfPriority, "GetSharedFontInOrderOfPriority"},
- {6, nullptr, "GetSharedFontInOrderOfPriorityForSystem"},
+ {6, &IPlatformServiceManager::GetSharedFontInOrderOfPriority, "GetSharedFontInOrderOfPriorityForSystem"},
{100, nullptr, "RequestApplicationFunctionAuthorization"},
{101, nullptr, "RequestApplicationFunctionAuthorizationByProcessId"},
{102, nullptr, "RequestApplicationFunctionAuthorizationByApplicationId"},
@@ -262,8 +262,17 @@ void IPlatformServiceManager::GetSharedMemoryNativeHandle(HLERequestContext& ctx
}
void IPlatformServiceManager::GetSharedFontInOrderOfPriority(HLERequestContext& ctx) {
+ // The maximum number of elements that can be returned is 6. Regardless of the available fonts
+ // or buffer size.
+ constexpr std::size_t MaxElementCount = 6;
IPC::RequestParser rp{ctx};
const u64 language_code{rp.Pop<u64>()}; // TODO(ogniK): Find out what this is used for
+ const std::size_t font_codes_count =
+ std::min(MaxElementCount, ctx.GetWriteBufferNumElements<u32>(0));
+ const std::size_t font_offsets_count =
+ std::min(MaxElementCount, ctx.GetWriteBufferNumElements<u32>(1));
+ const std::size_t font_sizes_count =
+ std::min(MaxElementCount, ctx.GetWriteBufferNumElements<u32>(2));
LOG_DEBUG(Service_NS, "called, language_code={:X}", language_code);
IPC::ResponseBuilder rb{ctx, 4};
@@ -280,9 +289,9 @@ void IPlatformServiceManager::GetSharedFontInOrderOfPriority(HLERequestContext&
}
// Resize buffers if game requests smaller size output
- font_codes.resize(std::min(font_codes.size(), ctx.GetWriteBufferNumElements<u32>(0)));
- font_offsets.resize(std::min(font_offsets.size(), ctx.GetWriteBufferNumElements<u32>(1)));
- font_sizes.resize(std::min(font_sizes.size(), ctx.GetWriteBufferNumElements<u32>(2)));
+ font_codes.resize(std::min(font_codes.size(), font_codes_count));
+ font_offsets.resize(std::min(font_offsets.size(), font_offsets_count));
+ font_sizes.resize(std::min(font_sizes.size(), font_sizes_count));
ctx.WriteBuffer(font_codes, 0);
ctx.WriteBuffer(font_offsets, 1);