Fix another real to vpiIntVal conversion in the run time

This commit is contained in:
Cary R
2013-10-11 11:26:17 -07:00
parent a196af8e15
commit 281556e93d
+10 -3
View File
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2001-2012 Stephen Williams ([email protected])
* Copyright (c) 2001-2013 Stephen Williams ([email protected])
* Copyright (c) 2001 Stephan Boettcher <[email protected]>
*
* This source code is free software; you can redistribute it
@@ -542,8 +542,15 @@ static void vthr_real_get_value(vpiHandle ref, s_vpi_value*vp)
break;
case vpiIntVal:
vp->value.integer = (int)(val + 0.5);
break;
/* NaN or +/- infinity are translated as 0. */
if (val != val || (val && (val == 0.5*val))) {
val = 0.0;
} else {
if (val >= 0.0) val = floor(val + 0.5);
else val = ceil(val - 0.5);
}
vp->value.integer = val;
break;
case vpiDecStrVal:
sprintf(rbuf, "%0.0f", val);