Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[3.x] Make all file access 64-bit (take 2) #47254

Merged
merged 1 commit into from
May 16, 2021

Commits on May 16, 2021

  1. Make all file access 64-bit (uint64_t)

    This changes the types of a big number of variables.
    
    General rules:
    - Using `uint64_t` in general. We also considered `int64_t` but eventually
      settled on keeping it unsigned, which is also closer to what one would expect
      with `size_t`/`off_t`.
    - We only keep `int64_t` for `seek_end` (takes a negative offset from the end)
      and for the `Variant` bindings, since `Variant::INT` is `int64_t`. This means
      we only need to guard against passing negative values in `core_bind.cpp`.
    - Using `uint32_t` integers for concepts not needing such a huge range, like
      pages, blocks, etc.
    
    In addition:
    - Improve usage of integer types in some related places; namely, `DirAccess`,
      core binds.
    
    Note:
    - On Windows, `_ftelli64` reports invalid values when using 32-bit MinGW with
      version < 8.0. This was an upstream bug fixed in 8.0. It breaks support for
      big files on 32-bit Windows builds made with that toolchain. We might add a
      workaround.
    
    Fixes godotengine#44363.
    Fixes godotengine/godot-proposals#400.
    
    Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
    RandomShaper and akien-mga committed May 16, 2021
    Configuration menu
    Copy the full SHA
    817ffc0 View commit details
    Browse the repository at this point in the history