summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service/set/system_settings_server.cpp
diff options
context:
space:
mode:
authorgerman77 <juangerman-13@hotmail.com>2024-02-24 20:27:57 +0100
committergerman77 <juangerman-13@hotmail.com>2024-02-24 21:44:21 +0100
commit9fccccedee481953451054138fe4a2c6b133677c (patch)
treee7589e51b5bf334aef78658b2e7efddcce3578dd /src/core/hle/service/set/system_settings_server.cpp
parentMerge pull request #13153 from german77/defaultset (diff)
downloadyuzu-9fccccedee481953451054138fe4a2c6b133677c.tar
yuzu-9fccccedee481953451054138fe4a2c6b133677c.tar.gz
yuzu-9fccccedee481953451054138fe4a2c6b133677c.tar.bz2
yuzu-9fccccedee481953451054138fe4a2c6b133677c.tar.lz
yuzu-9fccccedee481953451054138fe4a2c6b133677c.tar.xz
yuzu-9fccccedee481953451054138fe4a2c6b133677c.tar.zst
yuzu-9fccccedee481953451054138fe4a2c6b133677c.zip
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/set/system_settings_server.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/core/hle/service/set/system_settings_server.cpp b/src/core/hle/service/set/system_settings_server.cpp
index 6a7ea83fd..900d5408f 100644
--- a/src/core/hle/service/set/system_settings_server.cpp
+++ b/src/core/hle/service/set/system_settings_server.cpp
@@ -308,7 +308,7 @@ ISystemSettingsServer::ISystemSettingsServer(Core::System& system_)
SetupSettings();
m_system_settings.region_code =
- static_cast<SystemRegionCode>(Settings::values.region_index.GetValue());
+ static_cast<SystemRegionCode>(::Settings::values.region_index.GetValue());
// TODO: Remove this when starter applet is fully functional
EulaVersion eula_version{
@@ -715,7 +715,7 @@ Result ISystemSettingsServer::GetSettingsItemValueSize(
}
Result ISystemSettingsServer::GetSettingsItemValue(
- OutBuffer<BufferAttr_HipcMapAlias> out_data,
+ Out<u64> out_size, OutBuffer<BufferAttr_HipcMapAlias> out_data,
InLargeData<SettingItemName, BufferAttr_HipcPointer> setting_category_buffer,
InLargeData<SettingItemName, BufferAttr_HipcPointer> setting_name_buffer) {
const std::string setting_category{Common::StringFromBuffer(*setting_category_buffer)};
@@ -723,7 +723,7 @@ Result ISystemSettingsServer::GetSettingsItemValue(
LOG_INFO(Service_SET, "called, category={}, name={}", setting_category, setting_name);
- R_RETURN(GetSettingsItemValueImpl(out_data, setting_category, setting_name));
+ R_RETURN(GetSettingsItemValueImpl(out_data, *out_size, setting_category, setting_name));
}
Result ISystemSettingsServer::GetTvSettings(Out<TvSettings> out_tv_settings) {
@@ -1363,13 +1363,16 @@ void ISystemSettingsServer::SetSaveNeeded() {
m_save_needed = true;
}
-Result ISystemSettingsServer::GetSettingsItemValueImpl(std::vector<u8>& out_value,
+Result ISystemSettingsServer::GetSettingsItemValueImpl(std::span<u8> out_value, u64& out_size,
const std::string& category,
const std::string& name) {
auto settings{GetSettings()};
R_UNLESS(settings.contains(category) && settings[category].contains(name), ResultUnknown);
- out_value = settings[category][name];
+ ASSERT_MSG(out_value.size() >= settings[category][name].size(),
+ "Stored type is bigger than requested type");
+ out_size = std::min<u64>(settings[category][name].size(), out_value.size());
+ std::memcpy(out_value.data(), settings[category][name].data(), out_size);
R_SUCCEED();
}