recompute ovecSlice

The first two entries are always PCRE2_UNSET, then there's 2*(capture_top-1). At least that's how I read https://www.pcre.org/current/doc/html/pcre2callout.html
This commit is contained in:
jettero 2023-07-23 18:02:22 +00:00
parent d1b9df80a1
commit 54d8a33099

View File

@ -592,7 +592,7 @@ func (r *Regexp) SetCallout(fn func(cb *CalloutBlock) int32) error {
calloutStrBytes := unsafe.Slice((*byte)(unsafe.Pointer(ccb.Fcallout_string)), ccb.Fcallout_string_length)
cb.CalloutString = string(calloutStrBytes)
ovecSlice := unsafe.Slice((*lib.Tsize_t)(unsafe.Pointer(ccb.Foffset_vector)), (ccb.Fcapture_top*2)-1)
ovecSlice := unsafe.Slice((*lib.Tsize_t)(unsafe.Pointer(ccb.Foffset_vector)), 2+(ccb.Fcapture_top-1)*2)
if len(ovecSlice) > 2 {
ovecSlice = ovecSlice[2:]
for i := 0; i < len(ovecSlice); i += 2 {