1.1 --- a/rsvplib.py Mon Nov 01 01:22:44 2010 +0100
1.2 +++ b/rsvplib.py Mon Nov 01 01:50:24 2010 +0100
1.3 @@ -60,13 +60,8 @@
1.4 self.frame_stack = self.machine.frame_stack
1.5 self.local_sp_stack = self.machine.local_sp_stack
1.6
1.7 - def _get_absolute_index(self, pos, nelements):
1.8 - if pos >= 0 and pos < nelements:
1.9 - return pos
1.10 - elif pos < 0 and pos >= -nelements:
1.11 - return nelements + pos
1.12 - else:
1.13 - return None
1.14 + def _check_index(self, pos, nelements):
1.15 + return pos >= 0 and pos < nelements
1.16
1.17 def builtins_int_arithmetic_op(self, op):
1.18 frame = self.local_sp_stack[-1]
1.19 @@ -303,9 +298,7 @@
1.20
1.21 item_pos = self.machine.load(item_value.ref + 1)
1.22
1.23 - item_pos = self._get_absolute_index(item_pos, nelements)
1.24 -
1.25 - if item_pos is None:
1.26 + if not self._check_index(item_pos, nelements):
1.27 self.machine.exception = self.machine._MakeObject(2, self.index_error_instance)
1.28 return self.machine.RaiseException()
1.29
1.30 @@ -436,9 +429,7 @@
1.31
1.32 item_pos = self.machine.load(item_value.ref + 1)
1.33
1.34 - item_pos = self._get_absolute_index(item_pos, nelements)
1.35 -
1.36 - if item_pos is None:
1.37 + if not self._check_index(item_pos, nelements):
1.38 self.machine.exception = self.machine._MakeObject(2, self.index_error_instance)
1.39 return self.machine.RaiseException()
1.40