From cac3ea37262c3fdf77d6947b136873b12d3794ea Mon Sep 17 00:00:00 2001 From: itchyny Date: Sun, 9 Jul 2023 12:17:43 +0900 Subject: [PATCH] Fix string multiplication by 0 (and less than 1) to emit empty string --- src/builtin.c | 8 +++++--- tests/jq.test | 6 +++++- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/builtin.c b/src/builtin.c index 2236d17a..0fd75543 100644 --- a/src/builtin.c +++ b/src/builtin.c @@ -359,10 +359,12 @@ static jv f_multiply(jq_state *jq, jv input, jv a, jv b) { str = b; num = a; } - jv res = jv_null(); + jv res; double d = jv_number_value(num); - int n = 0.0 < d && d < 1.0 ? 1 : d; - if (n > 0) { + if (d < 0 || isnan(d)) { + res = jv_null(); + } else { + int n = d; size_t alen = jv_string_length_bytes(jv_copy(str)); res = jv_string_empty(alen * n); for (; n > 0; n--) { diff --git a/tests/jq.test b/tests/jq.test index 35cae263..193025da 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -1286,7 +1286,11 @@ indices(", ") [.[] * "abc"] [-1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 3.7, 10.0] -[null,null,null,"abc","abc","abc","abcabcabc","abcabcabcabcabcabcabcabcabcabc"] +[null,null,"","","abc","abc","abcabcabc","abcabcabcabcabcabcabcabcabcabc"] + +[. * (nan,-nan)] +"abc" +[null,null] [.[] / ","] ["a, bc, def, ghij, jklmn, a,b, c,d, e,f", "a,b,c,d, e,f,g,h"]