1.1 --- a/iixr/files.py Tue Jan 25 01:55:43 2011 +0100
1.2 +++ b/iixr/files.py Fri Jan 28 01:36:25 2011 +0100
1.3 @@ -199,15 +199,31 @@
1.4 v_in = self.read_number()
1.5 value.append(v + v_in)
1.6 else:
1.7 - expect_delta = 1
1.8 - for v in last:
1.9 + i = 0
1.10 + n = len(last)
1.11 + value = list(last)
1.12 +
1.13 + # Traverse a copy of the last value.
1.14 +
1.15 + while i < n:
1.16 v_in = self.read_number()
1.17 - if expect_delta:
1.18 - value.append(v + v_in)
1.19 - if v_in != 0:
1.20 - expect_delta = 0
1.21 - else:
1.22 - value.append(v_in - 1)
1.23 +
1.24 + # While zeros are read, retain the last value elements.
1.25 + # Otherwise, add the delta...
1.26 +
1.27 + if v_in != 0:
1.28 + value[i] += v_in
1.29 + i += 1
1.30 +
1.31 + # Then set absolute values for the remaining elements.
1.32 +
1.33 + while i < n:
1.34 + value[i] = self.read_number() - 1
1.35 + i += 1
1.36 + break
1.37 +
1.38 + i += 1
1.39 +
1.40 return tuple(value)
1.41 else:
1.42 return last + self.read_number()