in scripts/parser.py [0:0]
def _add_range(self, start, data):
"""Insert `data` at offset `start` into self.buffer, merge loaded_ranges."""
end = start + len(data) - 1
if end >= len(self.buffer):
self.buffer.extend(b'\x00' * (end + 1 - len(self.buffer)))
self.buffer[start:end+1] = data
# merge intervals
new = (start, end)
merged = []
i = 0
while i < len(self.loaded_ranges) and self.loaded_ranges[i][1] < new[0] - 1:
merged.append(self.loaded_ranges[i]); i += 1
while i < len(self.loaded_ranges) and self.loaded_ranges[i][0] <= new[1] + 1:
new = (min(new[0], self.loaded_ranges[i][0]),
max(new[1], self.loaded_ranges[i][1]))
i += 1
merged.append(new)
merged.extend(self.loaded_ranges[i:])
self.loaded_ranges = merged