[PATCH v2 17/26] git-compat-util.h: implement checked size_t to uint32_t conversion
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Dec 14, 2023, 22:24 UTC
- Message-ID
- <6ede9e060332a0850269fe69a7a3a15ac229344b.1702592604.git.me@ttaylorr.com>
- In-Reply-To
- <cover.1702592603.git.me@ttaylorr.com>
In a similar fashion as other checked cast functions in this header (such as `cast_size_t_to_ulong()` and `cast_size_t_to_int()`), implement a checked cast function for going from a size_t to a uint32_t value.
This function will be utilized in a future commit which needs to make such a conversion.
Signed-off-by: Taylor Blau <me@ttaylorr.com> --- git-compat-util.h | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/git-compat-util.h b/git-compat-util.h index 3e7a59b5ff..c3b6c2c226 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -1013,6 +1013,15 @@ static inline unsigned long cast_size_t_to_ulong(size_t a) return (unsigned long)a; } +static inline uint32_t cast_size_t_to_uint32_t(size_t a) +{ + if (a != (uint32_t)a) + die("object too large to read on this platform: %" + PRIuMAX" is cut off to %u", + (uintmax_t)a, (uint32_t)a); + return (uint32_t)a; +} + static inline int cast_size_t_to_int(size_t a) { if (a > INT_MAX)
-- 2.43.0.102.ga31d690331.dirty