Fix log.debug statement in lzw.py by ensuring that self.table is always set (#732)

* Fix log.debug statement in lzw.py by ensuring that self.table is always set.

* Add CHANGELOG.md
pull/731/head
Pieter Marsman 2022-03-21 19:27:22 +01:00 committed by GitHub
parent 782368b911
commit 13021c9875
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 7 deletions

View File

@ -8,11 +8,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Fixed ### Fixed
- `TypeError` in lzw.py when `self.table` is not set ([#732](https://github.com/pdfminer/pdfminer.six/pull/732))
- `TypeError` in encodingdb.py when name of unicode is not - `TypeError` in encodingdb.py when name of unicode is not
str ([#733](https://github.com/pdfminer/pdfminer.six/pull/733)) str ([#733](https://github.com/pdfminer/pdfminer.six/pull/733))
- `TypeError` in HTMLConverter when using a bytes fontname ([#734](https://github.com/pdfminer/pdfminer.six/pull/734)) - `TypeError` in HTMLConverter when using a bytes fontname ([#734](https://github.com/pdfminer/pdfminer.six/pull/734))
## [20220319] ## [20220319]
### Added ### Added

View File

@ -16,7 +16,7 @@ class LZWDecoder:
self.bpos = 8 self.bpos = 8
self.nbits = 9 self.nbits = 9
# NB: self.table stores None only in indices 256 and 257 # NB: self.table stores None only in indices 256 and 257
self.table: Optional[List[Optional[bytes]]] = None self.table: List[Optional[bytes]] = []
self.prevbuf: Optional[bytes] = None self.prevbuf: Optional[bytes] = None
def readbits(self, bits: int) -> int: def readbits(self, bits: int) -> int:
@ -55,10 +55,8 @@ class LZWDecoder:
elif code == 257: elif code == 257:
pass pass
elif not self.prevbuf: elif not self.prevbuf:
assert self.table is not None
x = self.prevbuf = cast(bytes, self.table[code]) # assume not None x = self.prevbuf = cast(bytes, self.table[code]) # assume not None
else: else:
assert self.table is not None
if code < len(self.table): if code < len(self.table):
x = cast(bytes, self.table[code]) # assume not None x = cast(bytes, self.table[code]) # assume not None
self.table.append(self.prevbuf + x[:1]) self.table.append(self.prevbuf + x[:1])
@ -89,10 +87,13 @@ class LZWDecoder:
# just ignore corrupt data and stop yielding there # just ignore corrupt data and stop yielding there
break break
yield x yield x
assert self.table is not None
logger.debug( logger.debug(
"nbits=%d, code=%d, output=%r, table=%r" "nbits=%d, code=%d, output=%r, table=%r",
% (self.nbits, code, x, self.table[258:]) self.nbits,
code,
x,
self.table[258:],
) )