Fix empty regular expression matches (fix #2565)

This commit is contained in:
itchyny authored and Nico Williams committed 2023-07-09 12:51:53 -05:00
1 parent cac216a39c
commit 600e602548
2 files changed
+15 -13

No files matched your search

+1 -1
View File
@@ -1002,7 +1002,7 @@ static jv f_match(jq_state *jq, jv input, jv regex, jv modifiers, jv testmode) {
jv_string((char*)ebuf)));
break;
}
} while (global && start != end);
} while (global && start <= end);
onig_region_free(region,1);
region = NULL;
if (region)
+14 -12
View File
@@ -1,12 +1,16 @@
# match builtin
[match("( )*"; "g")]
"abc"
[{"offset":0, "length":0, "string":"", "captures":[]},{"offset":1, "length":0, "string":"", "captures":[]},{"offset":2, "length":0, "string":"", "captures":[]}]
[{"offset":0, "length":0, "string":"", "captures":[]}, {"offset":1, "length":0, "string":"", "captures":[]}, {"offset":2, "length":0, "string":"", "captures":[]}, {"offset":3, "length":0, "string":"", "captures":[]}]
[match("( )*"; "gn")]
"abc"
[]
[match(""; "g")]
"ab"
[{"offset":0,"length":0,"string":"","captures":[]},{"offset":1,"length":0,"string":"","captures":[]},{"offset":2,"length":0,"string":"","captures":[]}]
[match("a"; "gi")]
"āáàä"
[]
@@ -71,29 +75,27 @@ gsub("a";"b")
"aaaaa"
"bbbbb"
gsub( "(.*)"; ""; "x")
gsub("(.*)"; ""; "x")
""
""
gsub( ""; "a"; "g")
gsub(""; "a"; "g")
""
"a"
gsub( "^"; ""; "g")
gsub("^"; ""; "g")
"a"
"a"
gsub(""; "a"; "g")
"a"
"aaa"
# The following is a regression test and should not be construed as a requirement other than that execution should terminate:
gsub( ""; "a"; "g")
gsub("$"; "a"; "g")
"a"
"aa"
gsub( "$"; "a"; "g")
"a"
"aa"
gsub( "^"; "a")
gsub("^"; "a")
""
"a"
@@ -163,5 +165,5 @@ sub("(?<x>.)"; "\(.x)!")
# splits and _nwise
[splits("")]
"ab"
["","a","b"]
["","a","b",""]