From b9501186810dfc461ec3701456ee3f9e13db7cf1 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Tue, 22 Jul 2014 21:17:57 +0200 Subject: [PATCH] Revert commit fc73e2e (PR 5005) for breaking certain PDF files --- src/core/core.js | 10 +++++++--- src/core/stream.js | 10 ++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/core/core.js b/src/core/core.js index f012b271c..e3a821028 100644 --- a/src/core/core.js +++ b/src/core/core.js @@ -14,8 +14,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/* globals assert, bytesToString, calculateMD5, Catalog, Dict, error, info, - isArray, isArrayBuffer, isName, isStream, isString, +/* globals assert, calculateMD5, Catalog, Dict, error, info, isArray, + isArrayBuffer, isName, isStream, isString, createPromiseCapability, Linearization, NullStream, PartialEvaluator, shadow, Stream, Lexer, StreamsSequenceStream, stringToPDFString, stringToBytes, Util, XRef, MissingDataException, Promise, Annotation, ObjectLoader, OperatorList @@ -301,10 +301,14 @@ var PDFDocument = (function PDFDocumentClosure() { function find(stream, needle, limit, backwards) { var pos = stream.pos; var end = stream.end; + var strBuf = []; if (pos + limit > end) { limit = end - pos; } - var str = bytesToString(stream.getBytes(limit)); + for (var n = 0; n < limit; ++n) { + strBuf.push(String.fromCharCode(stream.getByte())); + } + var str = strBuf.join(''); stream.pos = pos; var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle); if (index == -1) { diff --git a/src/core/stream.js b/src/core/stream.js index 1d49fbb05..e8afcc822 100644 --- a/src/core/stream.js +++ b/src/core/stream.js @@ -531,10 +531,12 @@ var FlateStream = (function FlateStreamClosure() { this.eof = true; } } else { - var block = str.getBytes(blockLen); - buffer.set(block, bufferLength); - if (block.length < blockLen) { - this.eof = true; + for (var n = bufferLength; n < end; ++n) { + if ((b = str.getByte()) === -1) { + this.eof = true; + break; + } + buffer[n] = b; } } return;