Просмотр исходного кода

core: Do not link LZ4 to core. Use common/data_compression for nso segment decompression instead.

unknown 7 лет назад
Родитель
Сommit
6a1a2d4aa5
2 измененных файлов с 8 добавлено и 11 удалено
  1. 1 1
      src/core/CMakeLists.txt
  2. 7 10
      src/core/loader/nso.cpp

+ 1 - 1
src/core/CMakeLists.txt

@@ -458,7 +458,7 @@ add_library(core STATIC
 create_target_directory_groups(core)
 
 target_link_libraries(core PUBLIC common PRIVATE audio_core video_core)
-target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt lz4_static mbedtls opus unicorn open_source_archives)
+target_link_libraries(core PUBLIC Boost::boost PRIVATE fmt mbedtls opus unicorn open_source_archives)
 if (ENABLE_WEB_SERVICE)
     target_compile_definitions(core PRIVATE -DENABLE_WEB_SERVICE)
     target_link_libraries(core PRIVATE web_service)

+ 7 - 10
src/core/loader/nso.cpp

@@ -4,7 +4,8 @@
 
 #include <cinttypes>
 #include <vector>
-#include <lz4.h>
+
+#include "common/data_compression.h"
 #include "common/common_funcs.h"
 #include "common/file_util.h"
 #include "common/hex_util.h"
@@ -35,15 +36,11 @@ static_assert(sizeof(MODHeader) == 0x1c, "MODHeader has incorrect size.");
 
 std::vector<u8> DecompressSegment(const std::vector<u8>& compressed_data,
                                   const NSOSegmentHeader& header) {
-    std::vector<u8> uncompressed_data(header.size);
-    const int bytes_uncompressed =
-        LZ4_decompress_safe(reinterpret_cast<const char*>(compressed_data.data()),
-                            reinterpret_cast<char*>(uncompressed_data.data()),
-                            static_cast<int>(compressed_data.size()), header.size);
-
-    ASSERT_MSG(bytes_uncompressed == static_cast<int>(header.size) &&
-                   bytes_uncompressed == static_cast<int>(uncompressed_data.size()),
-               "{} != {} != {}", bytes_uncompressed, header.size, uncompressed_data.size());
+    const std::vector<u8> uncompressed_data =
+        Compression::DecompressDataLZ4(compressed_data, header.size);
+
+    ASSERT_MSG(uncompressed_data.size() == static_cast<int>(header.size),
+               "{} != {}", header.size, uncompressed_data.size());
 
     return uncompressed_data;
 }