diff options
Diffstat (limited to '')
-rw-r--r-- | src/lj_strfmt.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lj_strfmt.c b/src/lj_strfmt.c index 5c808290..71ee9f62 100644 --- a/src/lj_strfmt.c +++ b/src/lj_strfmt.c | |||
@@ -102,7 +102,7 @@ retlit: | |||
102 | char * LJ_FASTCALL lj_strfmt_wint(char *p, int32_t k) | 102 | char * LJ_FASTCALL lj_strfmt_wint(char *p, int32_t k) |
103 | { | 103 | { |
104 | uint32_t u = (uint32_t)k; | 104 | uint32_t u = (uint32_t)k; |
105 | if (k < 0) { u = (uint32_t)-k; *p++ = '-'; } | 105 | if (k < 0) { u = ~u+1u; *p++ = '-'; } |
106 | if (u < 10000) { | 106 | if (u < 10000) { |
107 | if (u < 10) goto dig1; | 107 | if (u < 10) goto dig1; |
108 | if (u < 100) goto dig2; | 108 | if (u < 100) goto dig2; |
@@ -287,7 +287,7 @@ SBuf *lj_strfmt_putfxint(SBuf *sb, SFormat sf, uint64_t k) | |||
287 | /* Figure out signed prefixes. */ | 287 | /* Figure out signed prefixes. */ |
288 | if (STRFMT_TYPE(sf) == STRFMT_INT) { | 288 | if (STRFMT_TYPE(sf) == STRFMT_INT) { |
289 | if ((int64_t)k < 0) { | 289 | if ((int64_t)k < 0) { |
290 | k = (uint64_t)-(int64_t)k; | 290 | k = ~k+1u; |
291 | prefix = 256 + '-'; | 291 | prefix = 256 + '-'; |
292 | } else if ((sf & STRFMT_F_PLUS)) { | 292 | } else if ((sf & STRFMT_F_PLUS)) { |
293 | prefix = 256 + '+'; | 293 | prefix = 256 + '+'; |