Merge pull request #4897 from CodingFabian/optimize-stream-getCode

Optimization for FlateStream_getCode, making more pdfs parsable.
This commit is contained in:
Yury Delendik 2014-06-09 14:51:42 -05:00
commit 806aa36aa8

View File

@ -430,10 +430,12 @@ var FlateStream = (function FlateStreamClosure() {
var codeSize = this.codeSize; var codeSize = this.codeSize;
var codeBuf = this.codeBuf; var codeBuf = this.codeBuf;
var b;
while (codeSize < maxLen) { while (codeSize < maxLen) {
var b;
if ((b = str.getByte()) === -1) { if ((b = str.getByte()) === -1) {
error('Bad encoding in flate stream'); // premature end of stream. code might however still be valid.
// codeSize < codeLen check below guards against incomplete codeVal.
break;
} }
codeBuf |= (b << codeSize); codeBuf |= (b << codeSize);
codeSize += 8; codeSize += 8;
@ -441,7 +443,7 @@ var FlateStream = (function FlateStreamClosure() {
var code = codes[codeBuf & ((1 << maxLen) - 1)]; var code = codes[codeBuf & ((1 << maxLen) - 1)];
var codeLen = code >> 16; var codeLen = code >> 16;
var codeVal = code & 0xffff; var codeVal = code & 0xffff;
if (codeSize === 0 || codeSize < codeLen || codeLen === 0) { if (codeLen < 1 || codeSize < codeLen) {
error('Bad encoding in flate stream'); error('Bad encoding in flate stream');
} }
this.codeBuf = (codeBuf >> codeLen); this.codeBuf = (codeBuf >> codeLen);