Merge pull request #5187 from nnethercote/EI-checking
Reduce ASCII checks in makeInlineImage().
This commit is contained in:
commit
992e7613c1
@ -18,7 +18,7 @@
|
|||||||
FlateStream, isArray, isCmd, isDict, isInt, isName, isNum, isRef,
|
FlateStream, isArray, isCmd, isDict, isInt, isName, isNum, isRef,
|
||||||
isString, Jbig2Stream, JpegStream, JpxStream, LZWStream, Name,
|
isString, Jbig2Stream, JpegStream, JpxStream, LZWStream, Name,
|
||||||
NullStream, PredictorStream, Ref, RunLengthStream, warn, info,
|
NullStream, PredictorStream, Ref, RunLengthStream, warn, info,
|
||||||
StreamType, MissingDataException */
|
StreamType, MissingDataException, assert */
|
||||||
|
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
@ -152,32 +152,33 @@ var Parser = (function ParserClosure() {
|
|||||||
|
|
||||||
// searching for the /EI\s/
|
// searching for the /EI\s/
|
||||||
var state = 0, ch, i, ii;
|
var state = 0, ch, i, ii;
|
||||||
while (state !== 4 && (ch = stream.getByte()) !== -1) {
|
var E = 0x45, I = 0x49, SPACE = 0x20, NL = 0xA, CR = 0xD;
|
||||||
switch (ch | 0) {
|
while ((ch = stream.getByte()) !== -1) {
|
||||||
case 0x20:
|
if (state === 0) {
|
||||||
case 0x0D:
|
state = (ch === E) ? 1 : 0;
|
||||||
case 0x0A:
|
} else if (state === 1) {
|
||||||
// let's check next five bytes to be ASCII... just be sure
|
state = (ch === I) ? 2 : 0;
|
||||||
var followingBytes = stream.peekBytes(5);
|
} else {
|
||||||
for (i = 0, ii = followingBytes.length; i < ii; i++) {
|
assert(state === 2);
|
||||||
|
if (ch === SPACE || ch === NL || ch === CR) {
|
||||||
|
// Let's check the next five bytes are ASCII... just be sure.
|
||||||
|
var n = 5;
|
||||||
|
var followingBytes = stream.peekBytes(n);
|
||||||
|
for (i = 0; i < n; i++) {
|
||||||
ch = followingBytes[i];
|
ch = followingBytes[i];
|
||||||
if (ch !== 0x0A && ch !== 0x0D && (ch < 0x20 || ch > 0x7F)) {
|
if (ch !== NL && ch !== CR && (ch < SPACE || ch > 0x7F)) {
|
||||||
// not a LF, CR, SPACE or any visible ASCII character
|
// Not a LF, CR, SPACE or any visible ASCII character, i.e.
|
||||||
|
// it's binary stuff. Resetting the state.
|
||||||
state = 0;
|
state = 0;
|
||||||
break; // some binary stuff found, resetting the state
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
state = (state === 3 ? 4 : 0);
|
if (state === 2) {
|
||||||
break;
|
break; // finished!
|
||||||
case 0x45:
|
}
|
||||||
state = 2;
|
} else {
|
||||||
break;
|
|
||||||
case 0x49:
|
|
||||||
state = (state === 2 ? 3 : 0);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
state = 0;
|
state = 0;
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user