summaryrefslogtreecommitdiff
path: root/src/core/loader/nso.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/loader/nso.cpp')
-rw-r--r--src/core/loader/nso.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp
index 2beb85fbf..f7752e0e3 100644
--- a/src/core/loader/nso.cpp
+++ b/src/core/loader/nso.cpp
@@ -66,8 +66,7 @@ FileType AppLoader_NSO::IdentifyType(const FileSys::VirtualFile& file) {
66 66
67static std::vector<u8> DecompressSegment(const std::vector<u8>& compressed_data, 67static std::vector<u8> DecompressSegment(const std::vector<u8>& compressed_data,
68 const NsoSegmentHeader& header) { 68 const NsoSegmentHeader& header) {
69 std::vector<u8> uncompressed_data; 69 std::vector<u8> uncompressed_data(header.size);
70 uncompressed_data.resize(header.size);
71 const int bytes_uncompressed = LZ4_decompress_safe( 70 const int bytes_uncompressed = LZ4_decompress_safe(
72 reinterpret_cast<const char*>(compressed_data.data()), 71 reinterpret_cast<const char*>(compressed_data.data()),
73 reinterpret_cast<char*>(uncompressed_data.data()), compressed_data.size(), header.size); 72 reinterpret_cast<char*>(uncompressed_data.data()), compressed_data.size(), header.size);
@@ -80,8 +79,7 @@ static std::vector<u8> DecompressSegment(const std::vector<u8>& compressed_data,
80 79
81static std::vector<u8> ReadSegment(FileUtil::IOFile& file, const NsoSegmentHeader& header, 80static std::vector<u8> ReadSegment(FileUtil::IOFile& file, const NsoSegmentHeader& header,
82 size_t compressed_size) { 81 size_t compressed_size) {
83 std::vector<u8> compressed_data; 82 std::vector<u8> compressed_data(compressed_size);
84 compressed_data.resize(compressed_size);
85 83
86 file.Seek(header.offset, SEEK_SET); 84 file.Seek(header.offset, SEEK_SET);
87 if (compressed_size != file.ReadBytes(compressed_data.data(), compressed_size)) { 85 if (compressed_size != file.ReadBytes(compressed_data.data(), compressed_size)) {
@@ -113,7 +111,7 @@ VAddr AppLoader_NSO::LoadModule(FileSys::VirtualFile file, VAddr load_base) {
113 // Build program image 111 // Build program image
114 Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create(""); 112 Kernel::SharedPtr<Kernel::CodeSet> codeset = Kernel::CodeSet::Create("");
115 std::vector<u8> program_image; 113 std::vector<u8> program_image;
116 for (int i = 0; i < nso_header.segments.size(); ++i) { 114 for (std::size_t i = 0; i < nso_header.segments.size(); ++i) {
117 const std::vector<u8> compressed_data = 115 const std::vector<u8> compressed_data =
118 file->ReadBytes(nso_header.segments_compressed_size[i], nso_header.segments[i].offset); 116 file->ReadBytes(nso_header.segments_compressed_size[i], nso_header.segments[i].offset);
119 std::vector<u8> data = DecompressSegment(compressed_data, nso_header.segments[i]); 117 std::vector<u8> data = DecompressSegment(compressed_data, nso_header.segments[i]);