summaryrefslogtreecommitdiff
path: root/src/pattern.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/pattern.go')
-rw-r--r--src/pattern.go13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/pattern.go b/src/pattern.go
index 795fbb52..2abcf439 100644
--- a/src/pattern.go
+++ b/src/pattern.go
@@ -323,21 +323,24 @@ func (p *Pattern) basicMatch(item *Item) (int, int, int) {
func (p *Pattern) extendedMatch(item *Item) []Offset {
input := p.prepareInput(item)
offsets := []Offset{}
-Loop:
for _, termSet := range p.termSets {
+ var offset *Offset
for _, term := range termSet {
pfun := p.procFun[term.typ]
if sidx, eidx, tlen := p.iter(pfun, input, term.caseSensitive, p.forward, term.text); sidx >= 0 {
if term.inv {
- break Loop
+ continue
}
- offsets = append(offsets, Offset{int32(sidx), int32(eidx), int32(tlen)})
+ offset = &Offset{int32(sidx), int32(eidx), int32(tlen)}
break
} else if term.inv {
- offsets = append(offsets, Offset{0, 0, 0})
- break
+ offset = &Offset{0, 0, 0}
+ continue
}
}
+ if offset != nil {
+ offsets = append(offsets, *offset)
+ }
}
return offsets
}