diff --git a/src/serialization/impl/file.cpp b/src/serialization/impl/file.cpp index 969d9dd14f497132b7ddd03f04425bec43d51ae8..0d2e43414fd6a721c94a6ba50359d590b922a860 100644 --- a/src/serialization/impl/file.cpp +++ b/src/serialization/impl/file.cpp @@ -33,7 +33,7 @@ public: void rewind() override { std::rewind(m_fptr); } - void skip(size_t bytes) override { + void skip(int64_t bytes) override { auto err = fseek(m_fptr, bytes, SEEK_CUR); mgb_assert(!err); } @@ -104,7 +104,7 @@ public: void rewind() override { m_offset = 0; } - void skip(size_t bytes) override { + void skip(int64_t bytes) override { m_offset += bytes; mgb_assert(m_offset <= m_size); } @@ -146,7 +146,7 @@ public: m_offset = 0; } - void skip(size_t bytes) override { + void skip(int64_t bytes) override { m_offset += bytes; mgb_assert(m_offset <= m_size); } diff --git a/src/serialization/impl/serializer_oss.cpp b/src/serialization/impl/serializer_oss.cpp index 6d3183f57ad0d25dd9ea6f9727c25dee22f36425..fb03d04d59d2c72f9f71d6fe6c92722736d04c96 100644 --- a/src/serialization/impl/serializer_oss.cpp +++ b/src/serialization/impl/serializer_oss.cpp @@ -838,25 +838,22 @@ GraphLoader::LoadResult GraphLoaderOSS::load(const LoadConfig& config, bool rewi // Read fbs::Graph uint32_t size; m_file->read(&size, sizeof(size)); - m_graph_buf = m_file->read_shared(size); + m_file->skip(-sizeof(size)); + m_graph_buf = m_file->read_shared(size + sizeof(size)); // Rewind back to tensor data m_file->rewind(); m_file->skip(tensor_begin); - mgb_throw_if( - !fbs::GraphBufferHasIdentifier(m_graph_buf.data()), SerializationError, - "invalid fbs model"); - { flatbuffers::Verifier verifier( static_cast(m_graph_buf.data()), m_graph_buf.size()); mgb_throw_if( - !fbs::VerifyGraphBuffer(verifier), SerializationError, + !fbs::VerifySizePrefixedGraphBuffer(verifier), SerializationError, "model verification failed (invalid or corrupted model?)"); } - m_graph = fbs::GetGraph(m_graph_buf.data()); + m_graph = fbs::GetSizePrefixedGraph(m_graph_buf.data()); m_mgb_version = m_graph->mgb_version(); if (m_graph->mgb_version() > MGB_VERSION) { mgb_log_warn( diff --git a/src/serialization/impl/serializer_oss_v2.cpp b/src/serialization/impl/serializer_oss_v2.cpp index f0c5a4a3c721a9899e11668d0cfb68a93f98923a..c1e94e14aa12e5d3415e8d6860a7027930c26496 100644 --- a/src/serialization/impl/serializer_oss_v2.cpp +++ b/src/serialization/impl/serializer_oss_v2.cpp @@ -801,21 +801,18 @@ GraphLoader::LoadResult GraphLoaderOSSV2::load(const LoadConfig& config, bool re // Read fbs::Graph uint32_t size; m_file->read(&size, sizeof(size)); - m_model_buf = m_file->read_shared(size); - - mgb_throw_if( - !fbs::v2::ModelBufferHasIdentifier(m_model_buf.data()), SerializationError, - "invalid fbs model"); + m_file->skip(-sizeof(size)); + m_model_buf = m_file->read_shared(size + sizeof(size)); { flatbuffers::Verifier verifier( static_cast(m_model_buf.data()), m_model_buf.size()); mgb_throw_if( - !fbs::v2::VerifyModelBuffer(verifier), SerializationError, + !fbs::v2::VerifySizePrefixedModelBuffer(verifier), SerializationError, "model verification failed (invalid or corrupted model?)"); } - m_model = fbs::v2::GetModel(m_model_buf.data()); + m_model = fbs::v2::GetSizePrefixedModel(m_model_buf.data()); m_mgb_version = m_model->mge_version(); m_model_version = m_model->model_version(); if (m_model->mge_version() > MGB_VERSION) { diff --git a/src/serialization/include/megbrain/serialization/file.h b/src/serialization/include/megbrain/serialization/file.h index d1d9d66e232f172b3b90812bc215765f93c4ea76..8fc1b2a009ebd9a2f77da51fd343c7c3d65d1a10 100644 --- a/src/serialization/include/megbrain/serialization/file.h +++ b/src/serialization/include/megbrain/serialization/file.h @@ -33,7 +33,7 @@ public: virtual void rewind() = 0; //! skip given number of bytes - virtual void skip(size_t bytes) = 0; + virtual void skip(int64_t bytes) = 0; //! read data into buffer virtual void read(void* dst, size_t size) = 0; diff --git a/toolchains/ios.toolchain.cmake b/toolchains/ios.toolchain.cmake index c57174ff0c4dedf07a04eb727fa0c3efa1832a47..ab6b9ff9307fa349db1b7327e74e832febbed0f5 100644 --- a/toolchains/ios.toolchain.cmake +++ b/toolchains/ios.toolchain.cmake @@ -217,10 +217,10 @@ if(NOT DEFINED IOS_DEPLOYMENT_TARGET) "2.0" CACHE STRING "Minimum iOS version to build for.") else() - # Unless specified, SDK version 10.0 is used by default as minimum target version + # Unless specified, SDK version 11.0 is used by default as minimum target version # (iOS, tvOS). set(IOS_DEPLOYMENT_TARGET - "10.0" + "11.0" CACHE STRING "Minimum iOS version to build for.") endif() message(