Fix ASCII logging of very large values of type "double"

Increased the size of a buffer to be large enough to contain all the
characters of the largest possible "double" value when scientific
notation is not being used (previously, the nonsensical "NAN.0" would be
written to ASCII logs for any value >= 1e248).
This commit is contained in:
Daniel Thayer 2017-11-06 14:01:07 -06:00
parent aee307f02b
commit 6e89505d06
2 changed files with 7 additions and 5 deletions

View file

@ -145,7 +145,9 @@ void ODesc::Add(double d, bool no_exp)
AddBytes(&d, sizeof(d));
else
{
char tmp[256];
// Buffer needs enough chars to store max. possible "double" value
// of 1.79e308 without using scientific notation.
char tmp[350];
if ( no_exp )
modp_dtoa3(d, tmp, sizeof(tmp), IsReadable() ? 6 : 8);

View file

@ -3,7 +3,7 @@
#empty_field (empty)
#unset_field -
#path test
#open 2017-11-02-21-00-25
#open 2017-11-06-19-58-08
#fields d
#types double
2153226000.0
@ -19,8 +19,8 @@
-50000.0
3140000000000000.0
-3140000000000000.0
NAN.0
NAN.0
178999999999999996376899522972626047077637637819240219954027593177370961667659291027329061638406108931437333529420935752785895444161234074984843178962619172326295244262722141766382622299223626438470088150218987997954747866198184686628013966119769261150988554952970462018533787926725176560021258785656871583744.0
-178999999999999996376899522972626047077637637819240219954027593177370961667659291027329061638406108931437333529420935752785895444161234074984843178962619172326295244262722141766382622299223626438470088150218987997954747866198184686628013966119769261150988554952970462018533787926725176560021258785656871583744.0
0.000012
0
-0
@ -28,4 +28,4 @@ inf
-inf
0.0
nan
#close 2017-11-02-21-00-25
#close 2017-11-06-19-58-08