Skip to content

Commit

Permalink
Improve performance of unparsing floats.
Browse files Browse the repository at this point in the history
  • Loading branch information
lisdude committed Feb 9, 2019
1 parent edf9036 commit 5ebbae6
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions list.cc
Expand Up @@ -432,7 +432,6 @@ print_map_to_stream(Var key, Var value, void *sptr, int first)
void
unparse_value(Stream * s, Var v)
{
char *new_float = 0;
switch (v.type) {
case TYPE_INT:
stream_printf(s, "%" PRIdN, v.v.num);
Expand All @@ -444,10 +443,11 @@ unparse_value(Stream * s, Var v)
stream_add_string(s, error_name(v.v.err));
break;
case TYPE_FLOAT:
asprintf(&new_float, "%.*g", DBL_DIG, v.v.fnum);
if (!strchr(new_float, '.') && !strchr(new_float, 'e'))
asprintf(&new_float, "%s.0", new_float);
stream_add_string(s, new_float);
char buffer[40];
snprintf(buffer, 40, "%.*g", DBL_DIG, v.v.fnum);
if (!strchr(buffer, '.') && !strchr(buffer, 'e'))
strncat(buffer, ".0", 40);
stream_add_string(s, buffer);
break;
case TYPE_STR:
{
Expand Down

0 comments on commit 5ebbae6

Please sign in to comment.