diff --git a/lzstring/__init__.py b/lzstring/__init__.py index 8a9a891..657a3f2 100644 --- a/lzstring/__init__.py +++ b/lzstring/__init__.py @@ -527,12 +527,18 @@ def decompress(self, compressed): power = 1 while power != maxpower: - resb = data_val & data_position + if data_val is not None: + resb = data_val & data_position + else: + resb = 0 data_position >>= 1 if data_position == 0: data_position = 32768 - data_val = ord(data_string[data_index]) + if data_index < len(data_string): + data_val = ord(data_string[data_index]) + else: + data_val = None data_index += 1 bits |= (1 if resb > 0 else 0) * power @@ -555,12 +561,18 @@ def decompress(self, compressed): power = 1 while power != maxpower: - resb = data_val & data_position + if data_val is not None: + resb = data_val & data_position + else: + resb = 0 data_position >>= 1 if data_position == 0: data_position = 32768 - data_val = ord(data_string[data_index]) + if data_index < len(data_string): + data_val = ord(data_string[data_index]) + else: + data_val = None data_index += 1 bits |= (1 if resb > 0 else 0) * power