Make string buffer for converting number to string large enough.

This commit is contained in:
Bob Nystrom 2014-01-06 07:53:41 -08:00
parent b979272305
commit 46e1e7f069

View File

@ -279,10 +279,25 @@ DEF_NATIVE(num_abs)
DEF_NATIVE(num_toString) DEF_NATIVE(num_toString)
{ {
// According to Lua implementation, this should be enough for longest number // I think this should be large enough to hold any double converted to a
// formatted using %.14g. // string using "%.14g". Example:
char buffer[21]; //
sprintf(buffer, "%.14g", AS_NUM(args[0])); // -1.12345678901234e-1022
//
// So we have:
//
// + 1 char for sign
// + 1 char for digit
// + 1 char for "."
// + 14 chars for decimal digits
// + 1 char for "e"
// + 1 char for "-" or "+"
// + 4 chars for exponent
// + 1 char for "\0"
// = 24
char buffer[24];
double value = AS_NUM(args[0]);
sprintf(buffer, "%.14g", value);
RETURN_VAL(wrenNewString(vm, buffer, strlen(buffer))); RETURN_VAL(wrenNewString(vm, buffer, strlen(buffer)));
} }