Fix some tests.
[lightning.git] / mask.go
diff --git a/mask.go b/mask.go
index 7d614fa4aa6c6f6f2f2dc9279111f0db43bf3e5e..42232e04f5bb1d38791654bb70b9c6684c1fb7c1 100644 (file)
--- a/mask.go
+++ b/mask.go
@@ -27,6 +27,9 @@ type mask struct {
 }
 
 func (m *mask) Add(seqname string, start, end int) {
+       if m.frozen {
+               panic("bug: (*mask)Add() called after Freeze()")
+       }
        if m.intervals == nil {
                m.intervals = map[string][]interval{}
        }
@@ -48,6 +51,17 @@ func (m *mask) Check(seqname string, start, end int) bool {
        return m.itrees[seqname].check(0, interval{start, end})
 }
 
+func (m *mask) Len() int {
+       if !m.frozen {
+               return 0
+       }
+       n := 0
+       for _, intervals := range m.intervals {
+               n += len(intervals)
+       }
+       return n
+}
+
 func (m *mask) freeze(in []interval) intervalTree {
        if len(in) == 0 {
                return nil
@@ -60,10 +74,10 @@ func (m *mask) freeze(in []interval) intervalTree {
                itreesize = itreesize * 2
        }
        itree := make(intervalTree, itreesize)
-       itree.importSlice(0, in)
-       for i := len(in); i < itreesize; i++ {
+       for i := 0; i < itreesize; i++ {
                itree[i].maxend = -1
        }
+       itree.importSlice(0, in)
        return itree
 }