diff --git a/rpcs3/Emu/Cell/Modules/cellGame.cpp b/rpcs3/Emu/Cell/Modules/cellGame.cpp index 061c7d96af..269bdab415 100644 --- a/rpcs3/Emu/Cell/Modules/cellGame.cpp +++ b/rpcs3/Emu/Cell/Modules/cellGame.cpp @@ -837,10 +837,17 @@ error_code cellGameGetParamString(s32 id, vm::ptr buf, u32 bufsize) return CELL_GAME_ERROR_NOTSUPPORTED; } - std::string value = psf::get_string(prm->sfo, std::string(key.name)); - value.resize(bufsize - 1); + const std::string value = psf::get_string(prm->sfo, std::string(key.name)); + const auto value_size = value.size() + 1; - std::memcpy(buf.get_ptr(), value.c_str(), bufsize); + const auto pbuf = buf.get_ptr(); + const bool to_pad = bufsize > value_size; + std::memcpy(pbuf, value.c_str(), to_pad ? value_size : bufsize); + + if (to_pad) + { + std::memset(pbuf + value_size, 0, bufsize - value_size); + } return CELL_OK; }