summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoritchyny <itchyny@cybozu.co.jp>2023-06-04 11:48:33 +0900
committerNico Williams <nico@cryptonector.com>2023-07-08 22:25:22 -0500
commit88b45771bdfc3cc9e286d0bd55c653aaab885172 (patch)
treefb4889ef856daf32ddae4e96a39e43b93ccdf578
parentaf57893bc2e3f9db52dc7bceee1d960539e36f06 (diff)
Fix string multiplication with a value between 0.0 and 1.0
This commit fixes a regression of 6306ac89667c.
-rw-r--r--src/builtin.c3
-rw-r--r--tests/jq.test4
2 files changed, 6 insertions, 1 deletions
diff --git a/src/builtin.c b/src/builtin.c
index e8eb2ef3..2236d17a 100644
--- a/src/builtin.c
+++ b/src/builtin.c
@@ -360,7 +360,8 @@ static jv f_multiply(jq_state *jq, jv input, jv a, jv b) {
num = a;
}
jv res = jv_null();
- int n = jv_number_value(num);
+ double d = jv_number_value(num);
+ int n = 0.0 < d && d < 1.0 ? 1 : d;
if (n > 0) {
size_t alen = jv_string_length_bytes(jv_copy(str));
res = jv_string_empty(alen * n);
diff --git a/tests/jq.test b/tests/jq.test
index a4b8d5fd..35cae263 100644
--- a/tests/jq.test
+++ b/tests/jq.test
@@ -1284,6 +1284,10 @@ indices(", ")
["a", "ab", "abc"]
["aaa", "ababab", "abcabcabc"]
+[.[] * "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"]
+
[.[] / ","]
["a, bc, def, ghij, jklmn, a,b, c,d, e,f", "a,b,c,d, e,f,g,h"]
[["a"," bc"," def"," ghij"," jklmn"," a","b"," c","d"," e","f"],["a","b","c","d"," e","f","g","h"]]