From 92ec4a0b7ff34a64b9c29de30a39161063252354 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 7 Jun 2022 23:00:12 -0400 Subject: [PATCH] Fix bug zero-terminating truncated string --- runtime.c | 2 +- test-bn.scm | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/runtime.c b/runtime.c index 0a93ead5..78edb54c 100644 --- a/runtime.c +++ b/runtime.c @@ -2537,7 +2537,7 @@ void bignum2string(void *data, object cont, bignum2_type *bn, int radix) i = str_length - (index - buf); s->len = s->num_cp = i; memmove(buf, index, i); - buf[str_length-1] = '\0'; + s->str[i] = '\0'; } } return_closcall1(data, cont, s); diff --git a/test-bn.scm b/test-bn.scm index d7fb0112..5cc0241a 100644 --- a/test-bn.scm +++ b/test-bn.scm @@ -17,9 +17,12 @@ bignum2string(data, k, bn, obj_obj2int(radix)); ") -(write +(map + (lambda (row) + (write row) + (newline)) (list - (test-larger-bn 0 #x0FFF0001 10) ;; TODO: why is this not writing the correct number? + (test-larger-bn 0 #x0FFF0001 10) (test-bn #x0FFF0001 10) (test-bn -10 10)