Compare commits

..
Author SHA1 Message Date
dependabot[bot] 197e659b4d Bump actions/checkout from 6 to 7
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-06-22 13:45:04 +00:00
19 changed files with 81 additions and 154 deletions
+28 -28
View File
@@ -30,7 +30,7 @@ jobs:
cxx: [g++-13, clang++-18] cxx: [g++-13, clang++-18]
fail-fast: false fail-fast: false
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: cmake - name: cmake
run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_STATIC_FLATC=ON . run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_STATIC_FLATC=ON .
- name: build - name: build
@@ -68,7 +68,7 @@ jobs:
name: Build Linux with -DFLATBUFFERS_NO_FILE_TESTS name: Build Linux with -DFLATBUFFERS_NO_FILE_TESTS
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: cmake - name: cmake
run: CXX=clang++-18 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_CXX_FLAGS="-DFLATBUFFERS_NO_FILE_TESTS" . run: CXX=clang++-18 cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON -DFLATBUFFERS_CXX_FLAGS="-DFLATBUFFERS_NO_FILE_TESTS" .
- name: build - name: build
@@ -80,7 +80,7 @@ jobs:
name: Build Linux with out-of-source build location name: Build Linux with out-of-source build location
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: make build directory - name: make build directory
run: mkdir build run: mkdir build
- name: cmake - name: cmake
@@ -112,7 +112,7 @@ jobs:
std: 23 std: 23
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: cmake - name: cmake
run: > run: >
CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles"
@@ -135,7 +135,7 @@ jobs:
std: [11, 14, 17, 20, 23] std: [11, 14, 17, 20, 23]
fail-fast: false fail-fast: false
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Add msbuild to PATH - name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v2
- name: cmake - name: cmake
@@ -160,7 +160,7 @@ jobs:
name: Build Windows 2022 name: Build Windows 2022
runs-on: windows-2022 runs-on: windows-2022
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Add msbuild to PATH - name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v2
- name: cmake - name: cmake
@@ -200,7 +200,7 @@ jobs:
'-p:EnableSpanT=true,UnsafeByteBuffer=true' '-p:EnableSpanT=true,UnsafeByteBuffer=true'
] ]
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Setup .NET Core SDK - name: Setup .NET Core SDK
uses: actions/setup-dotnet@v5 uses: actions/setup-dotnet@v5
with: with:
@@ -229,7 +229,7 @@ jobs:
name: Build Mac (for Intel) name: Build Mac (for Intel)
runs-on: macos-15-intel runs-on: macos-15-intel
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: cmake - name: cmake
run: cmake -G "Xcode" -DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON . run: cmake -G "Xcode" -DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
- name: build - name: build
@@ -272,7 +272,7 @@ jobs:
name: Build Mac (universal build) name: Build Mac (universal build)
runs-on: macos-latest runs-on: macos-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: cmake - name: cmake
run: cmake -G "Xcode" -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON . run: cmake -G "Xcode" -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON .
- name: build - name: build
@@ -312,7 +312,7 @@ jobs:
if: false #disabled due to continual failure if: false #disabled due to continual failure
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: set up Java - name: set up Java
uses: actions/setup-java@v5 uses: actions/setup-java@v5
with: with:
@@ -336,7 +336,7 @@ jobs:
matrix: matrix:
cxx: [g++-13, clang++-18] cxx: [g++-13, clang++-18]
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: cmake - name: cmake
run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON . && make -j run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DFLATBUFFERS_BUILD_TESTS=OFF -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON . && make -j
- name: Generate - name: Generate
@@ -348,7 +348,7 @@ jobs:
name: Check Generated Code on Windows name: Check Generated Code on Windows
runs-on: windows-2022 runs-on: windows-2022
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Add msbuild to PATH - name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v2
- name: cmake - name: cmake
@@ -367,7 +367,7 @@ jobs:
matrix: matrix:
cxx: [g++-13] cxx: [g++-13]
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: cmake - name: cmake
run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DFLATBUFFERS_CXX_FLAGS="-Wno-unused-parameter -fno-aligned-new" -DFLATBUFFERS_BUILD_BENCHMARKS=ON -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON . && make -j run: CXX=${{ matrix.cxx }} cmake -G "Unix Makefiles" -DFLATBUFFERS_CXX_FLAGS="-Wno-unused-parameter -fno-aligned-new" -DFLATBUFFERS_BUILD_BENCHMARKS=ON -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_STRICT_MODE=ON . && make -j
- name: Run benchmarks - name: Run benchmarks
@@ -382,7 +382,7 @@ jobs:
name: Build Java name: Build Java
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: test - name: test
working-directory: java working-directory: java
run: mvn test run: mvn test
@@ -392,7 +392,7 @@ jobs:
runs-on: macos-15 runs-on: macos-15
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: set up Java - name: set up Java
uses: actions/setup-java@v5 uses: actions/setup-java@v5
with: with:
@@ -415,7 +415,7 @@ jobs:
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v6 uses: actions/checkout@v7
- name: set up Java - name: set up Java
uses: actions/setup-java@v5 uses: actions/setup-java@v5
with: with:
@@ -439,7 +439,7 @@ jobs:
name: Build Rust Linux name: Build Rust Linux
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: test - name: test
working-directory: tests working-directory: tests
run: bash RustTest.sh run: bash RustTest.sh
@@ -448,7 +448,7 @@ jobs:
name: Build Rust Windows name: Build Rust Windows
runs-on: windows-2022 runs-on: windows-2022
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: test - name: test
working-directory: tests working-directory: tests
run: ./RustTest.bat run: ./RustTest.bat
@@ -457,7 +457,7 @@ jobs:
name: Build Python name: Build Python
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: flatc - name: flatc
# FIXME: make test script not rely on flatc # FIXME: make test script not rely on flatc
run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j
@@ -469,7 +469,7 @@ jobs:
name: Build Go name: Build Go
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: flatc - name: flatc
# FIXME: make test script not rely on flatc # FIXME: make test script not rely on flatc
run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j
@@ -481,7 +481,7 @@ jobs:
name: Build PHP name: Build PHP
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: flatc - name: flatc
# FIXME: make test script not rely on flatc # FIXME: make test script not rely on flatc
run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF -DFLATBUFFERS_STRICT_MODE=ON . && make -j
@@ -498,7 +498,7 @@ jobs:
swift: ["6.0", "6.1", "6.2"] swift: ["6.0", "6.1", "6.2"]
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- uses: swift-actions/setup-swift@v2 - uses: swift-actions/setup-swift@v2
with: with:
swift-version: ${{ matrix.swift }} swift-version: ${{ matrix.swift }}
@@ -511,7 +511,7 @@ jobs:
name: Test swift windows name: Test swift windows
runs-on: windows-latest runs-on: windows-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- uses: SwiftyLab/setup-swift@latest - uses: SwiftyLab/setup-swift@latest
with: with:
swift-version: '6.1' swift-version: '6.1'
@@ -522,7 +522,7 @@ jobs:
name: Test Swift Wasm name: Test Swift Wasm
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- uses: swift-actions/setup-swift@v2 - uses: swift-actions/setup-swift@v2
with: with:
swift-version: 6.2.1 swift-version: 6.2.1
@@ -540,7 +540,7 @@ jobs:
name: Build TS name: Build TS
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: flatc - name: flatc
# FIXME: make test script not rely on flatc # FIXME: make test script not rely on flatc
run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j
@@ -559,7 +559,7 @@ jobs:
name: Build Dart name: Build Dart
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- uses: dart-lang/setup-dart@v1 - uses: dart-lang/setup-dart@v1
with: with:
sdk: stable sdk: stable
@@ -574,7 +574,7 @@ jobs:
name: Build Nim name: Build Nim
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: flatc - name: flatc
# FIXME: make test script not rely on flatc # FIXME: make test script not rely on flatc
run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j run: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DFLATBUFFERS_BUILD_TESTS=OFF -DFLATBUFFERS_INSTALL=OFF -DFLATBUFFERS_BUILD_FLATLIB=OFF -DFLATBUFFERS_BUILD_FLATHASH=OFF . && make -j
@@ -590,7 +590,7 @@ jobs:
name: Bazel name: Bazel
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
# Explicitly use 8.5.1 until we can update or https://github.com/actions/runner-images/issues/13564 is fixed. # Explicitly use 8.5.1 until we can update or https://github.com/actions/runner-images/issues/13564 is fixed.
- name: Set env - name: Set env
run: > run: >
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Configure Git Credentials - name: Configure Git Credentials
run: | run: |
git config user.name github-actions[bot] git config user.name github-actions[bot]
+6 -6
View File
@@ -12,7 +12,7 @@ jobs:
name: Publish NPM name: Publish NPM
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- uses: actions/setup-node@v6 - uses: actions/setup-node@v6
with: with:
node-version: '20.x' node-version: '20.x'
@@ -29,7 +29,7 @@ jobs:
run: run:
working-directory: ./python working-directory: ./python
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- uses: actions/setup-python@v6 - uses: actions/setup-python@v6
with: with:
python-version: '3.10' python-version: '3.10'
@@ -57,7 +57,7 @@ jobs:
run: run:
working-directory: ./net/flatbuffers working-directory: ./net/flatbuffers
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- uses: actions/setup-dotnet@v5 - uses: actions/setup-dotnet@v5
with: with:
dotnet-version: '8.0.x' dotnet-version: '8.0.x'
@@ -80,7 +80,7 @@ jobs:
run: run:
working-directory: ./java working-directory: ./java
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Set up Maven Central Repository - name: Set up Maven Central Repository
uses: actions/setup-java@v5 uses: actions/setup-java@v5
@@ -108,7 +108,7 @@ jobs:
run: run:
working-directory: ./kotlin working-directory: ./kotlin
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- name: Set up Maven Central Repository - name: Set up Maven Central Repository
uses: actions/setup-java@v5 uses: actions/setup-java@v5
with: with:
@@ -133,7 +133,7 @@ jobs:
name: Publish crates.io name: Publish crates.io
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v6 - uses: actions/checkout@v7
- uses: actions-rs/toolchain@v1 - uses: actions-rs/toolchain@v1
with: with:
toolchain: stable toolchain: stable
-11
View File
@@ -75,17 +75,6 @@ extension Array where Element == Package.Dependency {
.package( .package(
url: "https://github.com/grpc/grpc-swift-nio-transport.git", url: "https://github.com/grpc/grpc-swift-nio-transport.git",
from: "2.0.0"), from: "2.0.0"),
// swift-crypto arrives through grpc-swift-nio-transport -> swift-nio-ssl
// and is otherwise resolved afresh on every build, because this package
// ships no Package.resolved. 5.x asks for swift-tools-version 6.2, so only
// the 6.2 CI job selects it - and then fails to compile it, because 5.x
// uses `@nonexhaustive`, which the 6.2.x toolchains do not accept yet.
// Stay on the last 4.x release that still builds with every toolchain in
// the Swift CI matrix (4.3.0 declares swift-tools-version 6.0; 4.4+ asks
// for 6.1 and would drop the 6.0 job).
.package(
url: "https://github.com/apple/swift-crypto.git",
"4.0.0" ..< "4.4.0"),
] ]
#endif #endif
} }
+1
View File
@@ -504,6 +504,7 @@ grpc::string GenerateInterface(grpc_generator::File* file,
const grpc::string& filename) { const grpc::string& filename) {
grpc::string output; grpc::string output;
std::set<grpc::string> generated_functions;
std::map<grpc::string, grpc::string> vars; std::map<grpc::string, grpc::string> vars;
vars["PATH"] = file->package(); vars["PATH"] = file->package();
+1 -1
View File
@@ -271,7 +271,7 @@ namespace flatbuffers {
#if (defined(_MSC_VER) && _MSC_VER >= 1800) || \ #if (defined(_MSC_VER) && _MSC_VER >= 1800) || \
(defined(__ANDROID__) && defined(__ANDROID_API__) && __ANDROID_API__>= 26) || \ (defined(__ANDROID__) && defined(__ANDROID_API__) && __ANDROID_API__>= 26) || \
(defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 700)) && \ (defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 700)) && \
!defined(__Fuchsia__) && (!defined(__linux__) || defined(__GLIBC__)) !defined(__Fuchsia__)
#define FLATBUFFERS_LOCALE_INDEPENDENT 1 #define FLATBUFFERS_LOCALE_INDEPENDENT 1
#else #else
#define FLATBUFFERS_LOCALE_INDEPENDENT 0 #define FLATBUFFERS_LOCALE_INDEPENDENT 0
+9 -8
View File
@@ -24,14 +24,15 @@ class handle:
struct offset: struct offset:
o:int o:int
let sz_8 = 1 enum sizeof:
let sz_16 = 2 sz_8 = 1
let sz_32 = 4 sz_16 = 2
let sz_64 = 8 sz_32 = 4
let sz_voffset = 2 sz_64 = 8
let sz_uoffset = 4 sz_voffset = 2
let sz_soffset = 4 sz_uoffset = 4
let sz_metadata_fields = 2 sz_soffset = 4
sz_metadata_fields = 2
class builder: class builder:
buf = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" buf = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+2
View File
@@ -722,6 +722,8 @@ void BinaryAnnotator::BuildTable(const uint64_t table_offset,
BinaryRegionComment offset_field_comment; BinaryRegionComment offset_field_comment;
offset_field_comment.type = BinaryRegionCommentType::TableOffsetField; offset_field_comment.type = BinaryRegionCommentType::TableOffsetField;
offset_field_comment.name = field->name()->c_str(); offset_field_comment.name = field->name()->c_str();
const std::string offset_prefix =
"offset to field `" + std::string(field->name()->c_str()) + "`";
// Validate any field that isn't inline (i.e., non-structs). // Validate any field that isn't inline (i.e., non-structs).
if (!IsInlineField(field)) { if (!IsInlineField(field)) {
+3 -1
View File
@@ -404,7 +404,7 @@ class CppGenerator : public BaseGenerator {
code_ += "struct {{STRUCT_NAME}}BinarySchema {"; code_ += "struct {{STRUCT_NAME}}BinarySchema {";
code_ += " static const uint8_t *data() {"; code_ += " static const uint8_t *data() {";
code_ += " // Buffer containing the binary schema."; code_ += " // Buffer containing the binary schema.";
code_ += " alignas(uint64_t) static const uint8_t bfbsData[" + code_ += " static const uint8_t bfbsData[" +
NumToString(parser_.builder_.GetSize()) + "] = {"; NumToString(parser_.builder_.GetSize()) + "] = {";
code_ += binary_schema_hex_text; code_ += binary_schema_hex_text;
code_ += " };"; code_ += " };";
@@ -2737,6 +2737,7 @@ class CppGenerator : public BaseGenerator {
if (!field.IsScalarOptional()) { if (!field.IsScalarOptional()) {
const bool is_scalar = IsScalar(type.base_type); const bool is_scalar = IsScalar(type.base_type);
std::string accessor; std::string accessor;
std::string offset_size = "";
if (is_scalar) { if (is_scalar) {
accessor = "GetField<"; accessor = "GetField<";
} else if (IsStruct(type)) { } else if (IsStruct(type)) {
@@ -2814,6 +2815,7 @@ class CppGenerator : public BaseGenerator {
void GenTableFieldType(const FieldDef& field) { void GenTableFieldType(const FieldDef& field) {
const auto& type = field.value.type; const auto& type = field.value.type;
const auto offset_str = GenFieldOffsetName(field);
if (!field.IsScalarOptional()) { if (!field.IsScalarOptional()) {
std::string afterptr = " *" + NullableExtension(); std::string afterptr = " *" + NullableExtension();
code_.SetValue("FIELD_TYPE", code_.SetValue("FIELD_TYPE",
+2
View File
@@ -1149,6 +1149,8 @@ static bool GenerateDart(const Parser& parser, const std::string& path,
static std::string DartMakeRule(const Parser& parser, const std::string& path, static std::string DartMakeRule(const Parser& parser, const std::string& path,
const std::string& file_name) { const std::string& file_name) {
auto filebase =
flatbuffers::StripPath(flatbuffers::StripExtension(file_name));
dart::DartGenerator generator(parser, path, file_name); dart::DartGenerator generator(parser, path, file_name);
auto make_rule = generator.Filename("") + ": "; auto make_rule = generator.Filename("") + ": ";
+2
View File
@@ -966,6 +966,8 @@ class KotlinGenerator : public BaseGenerator {
auto bbgetter = ByteBufferGetter(field.value.type, "bb"); auto bbgetter = ByteBufferGetter(field.value.type, "bb");
auto ucast = CastToUsigned(field); auto ucast = CastToUsigned(field);
auto offset_val = NumToString(field.value.offset); auto offset_val = NumToString(field.value.offset);
auto offset_prefix =
"val o = __offset(" + offset_val + "); return o != 0 ? ";
auto value_base_type = field.value.type.base_type; auto value_base_type = field.value.type.base_type;
// Most field accessors need to retrieve and test the field offset // Most field accessors need to retrieve and test the field offset
// first, this is the offset value for that: // first, this is the offset value for that:
+5
View File
@@ -146,6 +146,7 @@ class KotlinKMPGenerator : public BaseGenerator {
std::string code = std::string code =
"// " + std::string(FlatBuffersGeneratedWarning()) + "\n\n"; "// " + std::string(FlatBuffersGeneratedWarning()) + "\n\n";
auto qualified = ns.GetFullyQualifiedName("");
std::string namespace_name = namer_.Namespace(ns); std::string namespace_name = namer_.Namespace(ns);
if (!namespace_name.empty()) { if (!namespace_name.empty()) {
code += "package " + namespace_name; code += "package " + namespace_name;
@@ -340,6 +341,7 @@ class KotlinKMPGenerator : public BaseGenerator {
std::string GenDefaultBufferValue(const FieldDef& field) const { std::string GenDefaultBufferValue(const FieldDef& field) const {
auto& value = field.value; auto& value = field.value;
auto base_type = value.type.base_type; auto base_type = value.type.base_type;
auto field_name = field.name;
std::string suffix = IsScalar(base_type) ? LiteralSuffix(value.type) : ""; std::string suffix = IsScalar(base_type) ? LiteralSuffix(value.type) : "";
if (field.IsScalarOptional()) { if (field.IsScalarOptional()) {
return "null"; return "null";
@@ -371,6 +373,7 @@ class KotlinKMPGenerator : public BaseGenerator {
std::string GenDefaultValue(const FieldDef& field) const { std::string GenDefaultValue(const FieldDef& field) const {
auto& value = field.value; auto& value = field.value;
auto base_type = value.type.base_type; auto base_type = value.type.base_type;
auto field_name = field.name;
std::string suffix = LiteralSuffix(value.type); std::string suffix = LiteralSuffix(value.type);
if (field.IsScalarOptional()) { if (field.IsScalarOptional()) {
return "null"; return "null";
@@ -1079,6 +1082,8 @@ class KotlinKMPGenerator : public BaseGenerator {
auto return_type = GetterReturnType(field); auto return_type = GetterReturnType(field);
auto bbgetter = ByteBufferGetter(field.value.type, "bb"); auto bbgetter = ByteBufferGetter(field.value.type, "bb");
auto offset_val = NumToString(field.value.offset); auto offset_val = NumToString(field.value.offset);
auto offset_prefix =
"val o = offset(" + offset_val + "); return o != 0 ? ";
auto value_base_type = field.value.type.base_type; auto value_base_type = field.value.type.base_type;
// Most field accessors need to retrieve and test the field offset // Most field accessors need to retrieve and test the field offset
// first, this is the offset value for that: // first, this is the offset value for that:
+2
View File
@@ -2010,6 +2010,8 @@ class PythonGenerator : public BaseGenerator {
void InitializeFromPackedBuf(const StructDef& struct_def, void InitializeFromPackedBuf(const StructDef& struct_def,
std::string* code_ptr) const { std::string* code_ptr) const {
auto& code = *code_ptr; auto& code = *code_ptr;
const auto struct_var = namer_.Variable(struct_def);
const auto struct_type = namer_.Type(struct_def);
code += GenIndents(1) + "@classmethod"; code += GenIndents(1) + "@classmethod";
code += GenIndents(1) + "def InitFromPackedBuf(cls, buf, pos=0):"; code += GenIndents(1) + "def InitFromPackedBuf(cls, buf, pos=0):";
+2
View File
@@ -787,6 +787,7 @@ class SwiftGenerator : public BaseGenerator {
} }
void GenTableReaderFields(const FieldDef& field) { void GenTableReaderFields(const FieldDef& field) {
const auto offset = NumToString(field.value.offset);
const auto field_field = namer_.Field(field); const auto field_field = namer_.Field(field);
const auto type = GenType(field.value.type); const auto type = GenType(field.value.type);
code_.SetValue("FIELDVAR", namer_.Variable(field)); code_.SetValue("FIELDVAR", namer_.Variable(field));
@@ -1381,6 +1382,7 @@ class SwiftGenerator : public BaseGenerator {
const auto& field = **it; const auto& field = **it;
if (field.deprecated) continue; if (field.deprecated) continue;
const auto type = GenType(field.value.type);
code_.SetValue("FIELDVAR", namer_.Variable(field)); code_.SetValue("FIELDVAR", namer_.Variable(field));
if (IsArray(field.value.type)) { if (IsArray(field.value.type)) {
code_.SetValue( code_.SetValue(
+5
View File
@@ -196,6 +196,7 @@ class TsGenerator : public BaseGenerator {
SkipDir::OutputPathAndTrailingPathSeparator); SkipDir::OutputPathAndTrailingPathSeparator);
symbolic_name = definition.defined_namespace->components.back(); symbolic_name = definition.defined_namespace->components.back();
} else { } else {
auto def_mod_name = namer_.File(definition, SkipFile::SuffixAndExtension);
symbolic_name = file_name_; symbolic_name = file_name_;
filepath = path_ + symbolic_name + ".ts"; filepath = path_ + symbolic_name + ".ts";
} }
@@ -285,10 +286,12 @@ class TsGenerator : public BaseGenerator {
auto base_name = auto base_name =
namer_.Directories(it.second.ns->components, SkipDir::OutputPath) + namer_.Directories(it.second.ns->components, SkipDir::OutputPath) +
base_file_name; base_file_name;
auto ts_file_path = base_name + ".ts";
auto base_name_rel = std::string("./"); auto base_name_rel = std::string("./");
base_name_rel += base_name_rel +=
namer_.Directories(rel_components, SkipDir::OutputPath); namer_.Directories(rel_components, SkipDir::OutputPath);
base_name_rel += base_file_name; base_name_rel += base_file_name;
auto ts_file_path_rel = base_name_rel + ".ts";
auto type_name = def.first; auto type_name = def.first;
auto fully_qualified_type_name = auto fully_qualified_type_name =
it.second.ns->GetFullyQualifiedName(type_name); it.second.ns->GetFullyQualifiedName(type_name);
@@ -308,6 +311,7 @@ class TsGenerator : public BaseGenerator {
const auto child_ns_level = it.second.ns->components.size() + 1; const auto child_ns_level = it.second.ns->components.size() + 1;
for (const auto& it2 : ns_defs_) { for (const auto& it2 : ns_defs_) {
if (it2.second.ns->components.size() != child_ns_level) continue; if (it2.second.ns->components.size() != child_ns_level) continue;
auto ts_file_path = it2.second.path + ".ts";
code += "export * as " + it2.second.symbolic_name + " from './"; code += "export * as " + it2.second.symbolic_name + " from './";
int count = it2.second.ns->components.size() > 1 ? 2 : 1; int count = it2.second.ns->components.size() > 1 ? 2 : 1;
std::vector<std::string> rel_path; std::vector<std::string> rel_path;
@@ -1172,6 +1176,7 @@ class TsGenerator : public BaseGenerator {
if (union_type.enum_def) { if (union_type.enum_def) {
const auto& enum_def = *union_type.enum_def; const auto& enum_def = *union_type.enum_def;
const auto enum_type = AddImport(imports, dependent, enum_def).name; const auto enum_type = AddImport(imports, dependent, enum_def).name;
const std::string union_accessor = "this." + field_name;
const auto union_has_string = UnionHasStringType(enum_def); const auto union_has_string = UnionHasStringType(enum_def);
const auto field_binded_method = "this." + field_name + ".bind(this)"; const auto field_binded_method = "this." + field_name + ".bind(this)";
+8 -38
View File
@@ -16,30 +16,6 @@
import Foundation import Foundation
@inline(__always)
private func verifySizePrefix(
byteBuffer: inout ByteBuffer,
requireExactSize: Bool,
options: VerifierOptions) throws
{
let verifier = try Verifier(buffer: &byteBuffer, options: options)
let prefixPosition = byteBuffer.reader
let prefix: UOffset = try verifier.getValue(at: prefixPosition)
let availableSize = byteBuffer.size &- UOffset(MemoryLayout<UOffset>.size)
if requireExactSize {
guard prefix == availableSize else {
throw FlatbuffersErrors.prefixedSizeNotEqualToBufferSize
}
} else if prefix > availableSize {
throw FlatbuffersErrors.outOfBounds(
position: UInt(prefixPosition)
&+ UInt(MemoryLayout<UOffset>.size)
&+ UInt(prefix),
end: byteBuffer.capacity)
}
}
/// Takes in a prefixed sized buffer, where the prefixed size would be skipped. /// Takes in a prefixed sized buffer, where the prefixed size would be skipped.
/// And would verify that the buffer passed is a valid `Flatbuffers` Object. /// And would verify that the buffer passed is a valid `Flatbuffers` Object.
/// - Parameters: /// - Parameters:
@@ -55,10 +31,6 @@ public func getPrefixedSizeCheckedRoot<T: FlatBufferTable & Verifiable>(
fileId: String? = nil, fileId: String? = nil,
options: VerifierOptions = .init()) throws -> T options: VerifierOptions = .init()) throws -> T
{ {
try verifySizePrefix(
byteBuffer: &byteBuffer,
requireExactSize: false,
options: options)
byteBuffer.skipPrefix() byteBuffer.skipPrefix()
return try getCheckedRoot( return try getCheckedRoot(
byteBuffer: &byteBuffer, byteBuffer: &byteBuffer,
@@ -81,11 +53,10 @@ public func getCheckedPrefixedSizeRoot<T: FlatBufferTable & Verifiable>(
fileId: String? = nil, fileId: String? = nil,
options: VerifierOptions = .init()) throws -> T options: VerifierOptions = .init()) throws -> T
{ {
try verifySizePrefix( let prefix = byteBuffer.skipPrefix()
byteBuffer: &byteBuffer, if prefix != byteBuffer.size {
requireExactSize: true, throw FlatbuffersErrors.prefixedSizeNotEqualToBufferSize
options: options) }
byteBuffer.skipPrefix()
return try getCheckedRoot( return try getCheckedRoot(
byteBuffer: &byteBuffer, byteBuffer: &byteBuffer,
fileId: fileId, fileId: fileId,
@@ -124,15 +95,14 @@ public func getCheckedRoot<T: FlatBufferTable & Verifiable>(
options: VerifierOptions = .init()) throws -> T options: VerifierOptions = .init()) throws -> T
{ {
var verifier = try Verifier(buffer: &byteBuffer, options: options) var verifier = try Verifier(buffer: &byteBuffer, options: options)
let rootPosition = byteBuffer.reader
if let fileId = fileId { if let fileId = fileId {
try verifier.verify(id: fileId, at: rootPosition) try verifier.verify(id: fileId)
} }
try ForwardOffset<T>.verify(&verifier, at: rootPosition, of: T.self) try ForwardOffset<T>.verify(&verifier, at: 0, of: T.self)
return T.init( return T.init(
byteBuffer, byteBuffer,
o: Int32(byteBuffer.read(def: UOffset.self, position: rootPosition)) o: Int32(byteBuffer.read(def: UOffset.self, position: byteBuffer.reader))
&+ Int32(rootPosition)) &+ Int32(byteBuffer.reader))
} }
/// Returns a `NON-Checked` flatbuffers object /// Returns a `NON-Checked` flatbuffers object
+3 -7
View File
@@ -215,16 +215,12 @@ public struct Verifier {
} }
@inline(__always) @inline(__always)
func verify(id: String, at position: Int) throws { func verify(id: String) throws {
let size = MemoryLayout<Int32>.size let size = MemoryLayout<Int32>.size
guard guard storage.capacity >= (size &* 2) else {
position >= 0,
position <= storage.capacity,
storage.capacity - position >= size &* 2
else {
throw FlatbuffersErrors.bufferDoesntContainID throw FlatbuffersErrors.bufferDoesntContainID
} }
let str = _buffer.readString(at: position &+ size, count: size) let str = _buffer.readString(at: size, count: size)
if id == str { if id == str {
return return
} }
+1 -1
View File
@@ -12,7 +12,7 @@ namespace Example {
struct MonsterBinarySchema { struct MonsterBinarySchema {
static const uint8_t *data() { static const uint8_t *data() {
// Buffer containing the binary schema. // Buffer containing the binary schema.
alignas(uint64_t) static const uint8_t bfbsData[14520] = { static const uint8_t bfbsData[14520] = {
0x20,0x00,0x00,0x00,0x42,0x46,0x42,0x53,0x00,0x00,0x00,0x00,0x14,0x00,0x20,0x00,0x04,0x00,0x08,0x00, 0x20,0x00,0x00,0x00,0x42,0x46,0x42,0x53,0x00,0x00,0x00,0x00,0x14,0x00,0x20,0x00,0x04,0x00,0x08,0x00,
0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x00,0x00,0x1C,0x00,0x14,0x00,0x00,0x00,0x58,0x00,0x00,0x00, 0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x00,0x00,0x1C,0x00,0x14,0x00,0x00,0x00,0x58,0x00,0x00,0x00,
0x34,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x70,0x0D,0x00,0x00,0x08,0x00,0x00,0x00, 0x34,0x00,0x00,0x00,0x24,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x70,0x0D,0x00,0x00,0x08,0x00,0x00,0x00,
@@ -373,58 +373,6 @@ final class FlatbuffersVerifierTests {
} }
} }
@Test
func testSizePrefixedVerifierUsesPostPrefixRoot() throws {
// The size prefix points to a valid empty decoy table at byte 44. The real
// root at byte 4 points to a truncated UInt64 vector that must be rejected.
let bytes: [UInt8] = [
44, 0, 0, 0,
16, 0, 0, 0,
6, 0, 8, 0, 4, 0,
0, 0, 0, 0, 0, 0,
12, 0, 0, 0,
8, 0, 0, 0, 0, 0, 0, 0,
2, 0, 0, 0, 65, 66,
0, 0,
4, 0, 4, 0,
4, 0, 0, 0,
]
var strictBuffer = ByteBuffer(bytes: bytes)
#expect(throws: FlatbuffersErrors.self) {
try getCheckedPrefixedSizeRoot(
byteBuffer: &strictBuffer) as Swift_Tests_Vectors
}
var prefixedBuffer = ByteBuffer(bytes: bytes)
#expect(throws: FlatbuffersErrors.self) {
try getPrefixedSizeCheckedRoot(
byteBuffer: &prefixedBuffer) as Swift_Tests_Vectors
}
var builder = FlatBufferBuilder()
let movie = Movie.createMovie(&builder)
Movie.finish(&builder, end: movie, prefix: true)
var validBuffer = builder.sizedBuffer
let _: Movie = try getCheckedPrefixedSizeRoot(
byteBuffer: &validBuffer,
fileId: Movie.id)
var shortBuffer = ByteBuffer(bytes: [0, 0, 0, 0])
#expect(throws: FlatbuffersErrors.bufferDoesntContainID) {
try getCheckedRoot(
byteBuffer: &shortBuffer,
fileId: Movie.id) as Movie
}
var oversizedPrefix = ByteBuffer(bytes: [5, 0, 0, 0, 0, 0, 0, 0])
#expect(throws: FlatbuffersErrors.outOfBounds(position: 9, end: 8)) {
try getPrefixedSizeCheckedRoot(
byteBuffer: &oversizedPrefix) as Movie
}
#expect(oversizedPrefix.reader == 0)
}
@Test @Test
func testFullVerifier() throws { func testFullVerifier() throws {
_ = _ =