diff --git a/extern/ufbx/README.blender b/extern/ufbx/README.blender index a0113111e48..97003314903 100644 --- a/extern/ufbx/README.blender +++ b/extern/ufbx/README.blender @@ -2,6 +2,6 @@ Project: ufbx - Single source file FBX loader URL: https://github.com/ufbx/ufbx License: SPDX:MIT Copyright: "Copyright (c) 2020 Samuli Raivio" -Upstream version: v0.19.0-dev (bad1b24, 2025-06-14) +Upstream version: v0.20.0 (a63ff0a, 2025-06-16) Local modifications: * None diff --git a/extern/ufbx/ufbx.c b/extern/ufbx/ufbx.c index be438efa15f..cd7273d88ac 100644 --- a/extern/ufbx/ufbx.c +++ b/extern/ufbx/ufbx.c @@ -407,8 +407,10 @@ extern "C" { #if defined(__GNUC__) #define UFBXI_GNUC __GNUC__ + #define UFBXI_GNUC_VERSION ufbx_pack_version(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) #else #define UFBXI_GNUC 0 + #define UFBXI_GNUC_VERSION 0 #endif #if !defined(UFBX_STANDARD_C) && defined(_MSC_VER) @@ -540,6 +542,10 @@ extern "C" { #if defined(__MINGW32__) #pragma GCC diagnostic ignored "-Wfloat-conversion" #endif + // `-Warray-bounds` results in warnings if UBsan is enabled and pre-GCC-14 has no way of detecting it.. + #if UFBXI_GNUC_VERSION >= ufbx_pack_version(4, 3, 0) && UFBXI_GNUC_VERSION < ufbx_pack_version(14, 0, 0) + #pragma GCC diagnostic ignored "-Warray-bounds" + #endif #endif #if !defined(ufbx_static_assert) @@ -868,7 +874,7 @@ enum { UFBX_MAXIMUM_ALIGNMENT = sizeof(void*) > 8 ? sizeof(void*) : 8 }; // -- Version -#define UFBX_SOURCE_VERSION ufbx_pack_version(0, 19, 0) +#define UFBX_SOURCE_VERSION ufbx_pack_version(0, 20, 0) ufbx_abi_data_def const uint32_t ufbx_source_version = UFBX_SOURCE_VERSION; ufbx_static_assert(source_header_version, UFBX_SOURCE_VERSION/1000u == UFBX_HEADER_VERSION/1000u); diff --git a/extern/ufbx/ufbx.h b/extern/ufbx/ufbx.h index e7beeec197f..9078a9608f7 100644 --- a/extern/ufbx/ufbx.h +++ b/extern/ufbx/ufbx.h @@ -257,7 +257,7 @@ struct ufbx_converter { }; // -- Version // Packing/unpacking for `UFBX_HEADER_VERSION` and `ufbx_source_version`. -#define ufbx_pack_version(major, minor, patch) ((uint32_t)(major)*1000000u + (uint32_t)(minor)*1000u + (uint32_t)(patch)) +#define ufbx_pack_version(major, minor, patch) ((major)*1000000u + (minor)*1000u + (patch)) #define ufbx_version_major(version) ((uint32_t)(version)/1000000u%1000u) #define ufbx_version_minor(version) ((uint32_t)(version)/1000u%1000u) #define ufbx_version_patch(version) ((uint32_t)(version)%1000u) @@ -267,7 +267,7 @@ struct ufbx_converter { }; // `ufbx_source_version` contains the version of the corresponding source file. // HINT: The version can be compared numerically to the result of `ufbx_pack_version()`, // for example `#if UFBX_VERSION >= ufbx_pack_version(0, 12, 0)`. -#define UFBX_HEADER_VERSION ufbx_pack_version(0, 19, 0) +#define UFBX_HEADER_VERSION ufbx_pack_version(0, 20, 0) #define UFBX_VERSION UFBX_HEADER_VERSION // -- Basic types