From e8fc0bee2029371c213ea8e7d1e896671ddc72cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=BCtzel?= Date: Wed, 15 May 2024 19:00:37 +0200 Subject: [PATCH] Use `int64_t` for `KLU_INDEXTYPE` if `SUNDIALS_INT64_T` is defined. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `long int` is 32 bits wide on systems that use an LLP64 data model (e.g., Windows 64-bit). Use a type for which the C standard guarantees that it is 64-bit instead (i.e., `int64_t`). Signed-off-by: Markus Mützel --- CHANGELOG.md | 3 +++ doc/shared/RecentChanges.rst | 3 +++ src/sunlinsol/klu/sunlinsol_klu.c | 3 ++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 59ffc7a35d..40706c1649 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,9 @@ Fixed a CMake bug that caused an MPI linking error for our C++ examples in some Fixed a bug in `ARKodeSPRKTable_Create` where the coefficient arrays where not allocated. +Fix bug on LLP64 platforms (like Windows 64-bit) where `KLU_INDEXTYPE` could be +32 bits wide even if `SUNDIALS_INT64_T` is defined. + ## Changes to SUNDIALS in release v7.0.0 ### Major Feature diff --git a/doc/shared/RecentChanges.rst b/doc/shared/RecentChanges.rst index a6eef5064e..4f1e6dbe92 100644 --- a/doc/shared/RecentChanges.rst +++ b/doc/shared/RecentChanges.rst @@ -65,3 +65,6 @@ Fixed a CMake bug that caused an MPI linking error for our C++ examples in some Fixed a bug in :c:func:`ARKodeSPRKTable_Create` where the coefficient arrays where not allocated. + +Fix bug on LLP64 platforms (like Windows 64-bit) where ``KLU_INDEXTYPE`` could be +32 bits wide even if ``SUNDIALS_INT64_T`` is defined. diff --git a/src/sunlinsol/klu/sunlinsol_klu.c b/src/sunlinsol/klu/sunlinsol_klu.c index cbdaa54135..568dc1d549 100644 --- a/src/sunlinsol/klu/sunlinsol_klu.c +++ b/src/sunlinsol/klu/sunlinsol_klu.c @@ -16,6 +16,7 @@ * the SUNLINSOL package. * -----------------------------------------------------------------*/ +#include #include #include #include @@ -49,7 +50,7 @@ */ #if defined(SUNDIALS_INT64_T) -#define KLU_INDEXTYPE long int +#define KLU_INDEXTYPE int64_t #else #define KLU_INDEXTYPE int #endif