mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
[svn-r10998] Purpose: Bug fix.
Description: For the definition of the macro H5T_CONV_Xx_CORE, added a condition branch (else if (*((ST*)S) == (DT)(D_MAX))) which seems redundant. It handles a special situation when the source is "float" and assigned the value of "INT_MAX". A compiler may do roundup making this value "INT_MAX+1". However, when do comparison "if (*((ST*)S) > (DT)(D_MAX))", the compiler may consider them equal. Platforms tested: fuss - simple change.
This commit is contained in:
parent
1e1e2578f6
commit
7b193be887
@ -183,6 +183,12 @@ H5FL_BLK_DEFINE_STATIC(array_seq);
|
||||
*((DT*)D) = (DT)(*((ST*)S)); \
|
||||
}
|
||||
|
||||
/* Added a condition branch(else if (*((ST*)S) == (DT)(D_MAX))) which seems redundant.
|
||||
* It handles a special situation when the source is "float" and assigned the value
|
||||
* of "INT_MAX". A compiler may do roundup making this value "INT_MAX+1". However,
|
||||
* when do comparison "if (*((ST*)S) > (DT)(D_MAX))", the compiler may consider them
|
||||
* equal. SLU - 2005/06/29
|
||||
*/
|
||||
#define H5T_CONV_Xx_CORE(S,D,STYPE,DTYPE,ST,DT,D_MIN,D_MAX) { \
|
||||
if (*((ST*)S) > (DT)(D_MAX)) { \
|
||||
if(cb_struct.func) { \
|
||||
@ -199,6 +205,8 @@ H5FL_BLK_DEFINE_STATIC(array_seq);
|
||||
} \
|
||||
else \
|
||||
*((DT*)D) = (D_MAX); \
|
||||
} else if (*((ST*)S) == (DT)(D_MAX)) { \
|
||||
*((DT*)D) = (D_MAX); \
|
||||
} else if (*((ST*)S) < (D_MIN)) { \
|
||||
if(cb_struct.func) { \
|
||||
H5T_conv_ret_t except_ret; /*callback return*/ \
|
||||
|
Loading…
Reference in New Issue
Block a user