Sean Kelly wrote: > Hrm, perhaps this line: > > slots = (cast(slot_t*)p)[0 .. len]; > > should be more like this: > > slots = (cast(slot_t*)p)[0 .. startlen + 1]; > > so the next call to slots.length isn't aware of the unused space? On second thought, scratch this idea. It would cause linear growth and half the buffer would still go unused. Sean