} else {
blocks = append(blocks, e.locator)
}
- segments = append(segments, m1segment{
+ next := m1segment{
name: name,
offset: streamLen + int64(e.offset),
length: int64(e.length),
- })
+ }
+ if prev := len(segments) - 1; prev >= 0 &&
+ segments[prev].name == name &&
+ segments[prev].offset+segments[prev].length == next.offset {
+ segments[prev].length += next.length
+ } else {
+ segments = append(segments, next)
+ }
streamLen += int64(e.size)
default:
// This can't happen: we
c.Check(currentMemExtents(), check.HasLen, 1)
m, err := fs.MarshalManifest(".")
- c.Check(m, check.Not(check.Equals), "")
+ c.Check(m, check.Matches, `[^:]* 0:50000:50K\n`)
c.Check(err, check.IsNil)
c.Check(currentMemExtents(), check.HasLen, 0)
}