Skip to content

Commit

Permalink
Throw an exception if a used range is attempted to be marked as free
Browse files Browse the repository at this point in the history
  • Loading branch information
kiij committed Jul 5, 2013
1 parent 1e72166 commit fade091
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions modules/Rom.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,12 +204,19 @@ def markRangeAsNotFree(self, usedRange):
else: # usedEnd > end
del(self._freeRanges[i])
self.markRangeAsNotFree((end+1, usedEnd))
break
return
elif (usedBegin > begin) and (usedEnd <= end):
self._freeRanges[i] = (begin, usedBegin-1)
if usedEnd != end:
self._freeRanges.insert(i, (usedEnd+1, end))
break
self._freeRanges.sort()
return
elif (usedBegin > begin) and (usedBegin < end) and (usedEnd > end):
self._freeRanges[i] = (begin, usedBegin-1)
self.markRangeAsNotFree((end+1, usedEnd))
return
raise RuntimeError("(%s,%s) is at least partially already marked as used" %
(hex(usedBegin), hex(usedEnd)))
# Find a free range starting at addr such that add & mask == 0
def getFreeLoc(self, size, mask=0):
ranges = filter(lambda (x,y): x & mask == 0, self._freeRanges)
Expand Down

0 comments on commit fade091

Please sign in to comment.