diff options
| author | Mike Pall <mike> | 2010-08-23 20:06:36 +0200 |
|---|---|---|
| committer | Mike Pall <mike> | 2010-08-23 20:06:36 +0200 |
| commit | 55017d46268424c2a7bd8ca195c298e26e57c354 (patch) | |
| tree | a066a9518a574027b39083048ccb7e462de72a4a /src | |
| parent | 65b8c36defce5a1691257711e25e42d17dbc30b9 (diff) | |
| download | luajit-55017d46268424c2a7bd8ca195c298e26e57c354.tar.gz luajit-55017d46268424c2a7bd8ca195c298e26e57c354.tar.bz2 luajit-55017d46268424c2a7bd8ca195c298e26e57c354.zip | |
Fix formatting of canonicalized number to string conversions.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib_string.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/lib_string.c b/src/lib_string.c index 528b3d0e..c1b584d8 100644 --- a/src/lib_string.c +++ b/src/lib_string.c | |||
| @@ -739,14 +739,17 @@ LJLIB_CF(string_format) | |||
| 739 | tv.n = lj_lib_checknum(L, arg); | 739 | tv.n = lj_lib_checknum(L, arg); |
| 740 | if (LJ_UNLIKELY((tv.u32.hi << 1) >= 0xffe00000)) { | 740 | if (LJ_UNLIKELY((tv.u32.hi << 1) >= 0xffe00000)) { |
| 741 | /* Canonicalize output of non-finite values. */ | 741 | /* Canonicalize output of non-finite values. */ |
| 742 | size_t len = lj_str_bufnum(buff, &tv); | 742 | char *p, nbuf[LUAI_MAXNUMBER2STR]; |
| 743 | size_t len = lj_str_bufnum(nbuf, &tv); | ||
| 743 | if (strfrmt[-1] == 'E' || strfrmt[-1] == 'G') { | 744 | if (strfrmt[-1] == 'E' || strfrmt[-1] == 'G') { |
| 744 | buff[len-3] = buff[len-3] - 0x20; | 745 | nbuf[len-3] = nbuf[len-3] - 0x20; |
| 745 | buff[len-2] = buff[len-2] - 0x20; | 746 | nbuf[len-2] = nbuf[len-2] - 0x20; |
| 746 | buff[len-1] = buff[len-1] - 0x20; | 747 | nbuf[len-1] = nbuf[len-1] - 0x20; |
| 747 | } | 748 | } |
| 748 | luaL_addlstring(&b, buff, len); | 749 | for (p = form; *p < 'e' && *p != '.'; p++) ; |
| 749 | continue; | 750 | *p++ = 's'; *p = '\0'; |
| 751 | sprintf(buff, form, nbuf); | ||
| 752 | break; | ||
| 750 | } | 753 | } |
| 751 | sprintf(buff, form, (double)tv.n); | 754 | sprintf(buff, form, (double)tv.n); |
| 752 | break; | 755 | break; |
