- for i in [1..nsub] do
- match.subs.add new Match( text,
- d + native_match[i].rm_so,
- native_match[i].rm_eo - native_match[i].rm_so)
+ for i in [1 .. nsub] do
+ if native_match[i].rm_so < 0 then
+ subs.add null
+ continue
+ end
+ var sub_bfrom = native_match[i].rm_so + bytesub
+ var sub_bto = native_match[i].rm_eo - 1 + bytesub
+ var sub_cstart = cstr.byte_to_char_index_cached(sub_bfrom, cstart, bfrom)
+ var sub_len = cstr.utf8_length(sub_bfrom, sub_bto - sub_bfrom + 1)
+ subs.add(new Match(rets, sub_cstart, sub_len))