1.1 --- a/rsvplib.py Sat Jun 12 01:07:13 2010 +0200
1.2 +++ b/rsvplib.py Sat Jun 12 01:42:22 2010 +0200
1.3 @@ -261,13 +261,13 @@
1.4 # Make a new sequence.
1.5 # NOTE: Using an arbitrary size.
1.6
1.7 - new_fragment = self.machine._MakeFragment(5)
1.8 + new_fragment = self.machine._MakeFragment(1, 5) # include the header
1.9
1.10 # Complete the list instance by saving the fragment reference.
1.11 + # NOTE: This requires an attribute in the list structure.
1.12
1.13 addr = list_value.ref + 1
1.14 self.machine.save(addr, DataValue(None, new_fragment))
1.15 - self.machine.result = DataValue(addr, addr)
1.16
1.17 def builtins_list_getitem(self):
1.18 frame = self.local_sp_stack[-1]
1.19 @@ -367,14 +367,14 @@
1.20 # Make a new fragment, maintaining more space than currently
1.21 # occupied in order to avoid reallocation.
1.22
1.23 - new_fragment = self.machine._MakeFragment(header.allocated_size + 1)
1.24 + new_fragment = self.machine._MakeFragment(header.occupied_size, header.occupied_size * 2)
1.25
1.26 # Copy existing elements.
1.27
1.28 - for i in range(1, header.allocated_size):
1.29 + for i in range(1, header.occupied_size):
1.30 self.machine.save(new_fragment + i, self.machine.load(fragment.ref + i))
1.31
1.32 - self.machine.save(new_fragment + header.allocated_size, arg_value)
1.33 + self.machine.save(new_fragment + header.occupied_size, arg_value)
1.34
1.35 # Set the new fragment in the object.
1.36 # NOTE: The old fragment could be deallocated.