V0.9: Fix another real to vpiIntVal conversion in the run time

This commit is contained in:
Cary R 2013-10-11 11:37:42 -07:00
parent 530c9cd895
commit 4989afb153
1 changed files with 9 additions and 2 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2001-2010 Stephen Williams (steve@icarus.com)
* Copyright (c) 2001-2013 Stephen Williams (steve@icarus.com)
* Copyright (c) 2001 Stephan Boettcher <stephan@nevis.columbia.edu>
*
* This source code is free software; you can redistribute it
@ -540,7 +540,14 @@ static void vthr_real_get_value(vpiHandle ref, s_vpi_value*vp)
break;
case vpiIntVal:
vp->value.integer = (int)(val + 0.5);
/* 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: