From 05264c88788f9bd9b04a58673ded246904210235 Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Tue, 27 Nov 2001 11:18:43 -0500 Subject: [svn-r4642] Purpose: Code cleanup Description: Added macro to check for overflows when assigning a value to a variable which requires a cast down in size or precision. Platforms tested: FreeBSD 4.4 (hawkwind) --- src/H5private.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/H5private.h b/src/H5private.h index e832987..dc15faa 100644 --- a/src/H5private.h +++ b/src/H5private.h @@ -445,6 +445,22 @@ MS doesn't recognize it yet (as of April 2001) #endif /* NDEBUG */ /* + * A macro for detecting over/under-flow when assigning between types + */ +#ifndef NDEBUG +#define H5_ASSIGN_OVERFLOW(var,expr,vartype,casttype) \ +{ \ + vartype _tmp_overflow=(vartype)(expr); \ + casttype _tmp_overflow2=(casttype)(_tmp_overflow); \ + assert((casttype)_tmp_overflow==_tmp_overflow2); \ + (var)=_tmp_overflow2; \ +} +#else /* NDEBUG */ +#define H5_ASSIGN_OVERFLOW(var,expr,vartype,casttype) \ + (var)=(casttype)(expr); +#endif /* NDEBUG */ + +/* * Data types and functions for timing certain parts of the library. */ typedef struct { -- cgit v0.12