Commit: 2cd2cab85c3516a6f6ec071a6043d3684f602b3b
Parent: b109ee2df862ea9534de33304fee903cd6ca30ca
Author: Randy Palamar
Date: Tue, 28 Jul 2026 18:33:36 -0700
util: stream_append_f64_e: don't infinite loop on negative inputs
No idea how this went missed for so long.
fixes: #72
Diffstat:
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/util.c b/util.c
@@ -512,6 +512,8 @@ stream_append_f64_e(Stream *s, f64 f)
for (i32 i = ABS(scale); i > 0; i--)
f *= (scale > 0)? 0.1f : 10.0f;
#else
+ f32 sign = Sign(f);
+ f *= sign;
i32 scale = 0;
if (f != 0) {
while (f > 1) {
@@ -526,7 +528,7 @@ stream_append_f64_e(Stream *s, f64 f)
#endif
u32 prec = 100;
- stream_append_f64(s, f, prec);
+ stream_append_f64(s, sign * f, prec);
stream_append_byte(s, 'e');
stream_append_byte(s, scale >= 0? '+' : '-');
for (u32 i = prec / 10; i > 1; i /= 10)