Skip to content

Commit 0ab6b78

Browse files
authored
Merge pull request #4 from peter-hams/master
Fixes decompression of base64 strings originated from JS compressor i…
2 parents 6840ae5 + 0f1867d commit 0ab6b78

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

lzstring/__init__.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -527,12 +527,18 @@ def decompress(self, compressed):
527527
power = 1
528528

529529
while power != maxpower:
530-
resb = data_val & data_position
530+
if data_val is not None:
531+
resb = data_val & data_position
532+
else:
533+
resb = 0
531534
data_position >>= 1
532535

533536
if data_position == 0:
534537
data_position = 32768
535-
data_val = ord(data_string[data_index])
538+
if data_index < len(data_string):
539+
data_val = ord(data_string[data_index])
540+
else:
541+
data_val = None
536542
data_index += 1
537543

538544
bits |= (1 if resb > 0 else 0) * power
@@ -555,12 +561,18 @@ def decompress(self, compressed):
555561
power = 1
556562

557563
while power != maxpower:
558-
resb = data_val & data_position
564+
if data_val is not None:
565+
resb = data_val & data_position
566+
else:
567+
resb = 0
559568
data_position >>= 1
560569

561570
if data_position == 0:
562571
data_position = 32768
563-
data_val = ord(data_string[data_index])
572+
if data_index < len(data_string):
573+
data_val = ord(data_string[data_index])
574+
else:
575+
data_val = None
564576
data_index += 1
565577

566578
bits |= (1 if resb > 0 else 0) * power

0 commit comments

Comments
 (0)