]> git.parisson.com Git - pdf.js.git/commitdiff
fixed getBytes in Ascii85Stream
authorsbarman <sbarman@L3CWZ5T.(none)>
Tue, 21 Jun 2011 21:34:13 +0000 (14:34 -0700)
committersbarman <sbarman@L3CWZ5T.(none)>
Tue, 21 Jun 2011 21:34:13 +0000 (14:34 -0700)
pdf.js

diff --git a/pdf.js b/pdf.js
index dfb47ea163c1bee53543c69ba2596df2919da8af..5ff97fa913a6e79ad2c70ca549d43e478d81fcb6 100644 (file)
--- a/pdf.js
+++ b/pdf.js
@@ -766,16 +766,38 @@ var Ascii85Stream = (function() {
             return this.buffer[this.pos++];
         },
         getBytes: function(n) {
-            var i, bytes;
-            bytes = new Uint8Array(n);
-            for (i = 0; i < n; ++i) {
-              if (this.pos >= this.bufferLength)
-                this.readBlock();
-              if (this.eof)
-                break;
-              bytes[i] = this.buffer[this.pos++];
+            if (n) {
+                var i, bytes;
+                bytes = new Uint8Array(n);
+                for (i = 0; i < n; ++i) {
+                    if (this.pos >= this.bufferLength)
+                        this.readBlock();
+                    if (this.eof)
+                        break;
+                    bytes[i] = this.buffer[this.pos++];
+                }
+                return bytes;
+            } else {
+                var length = 0;
+                var size = 1 << 8;
+                var bytes = new Uint8Array(size);
+                while (true) {
+                    if (this.pos >= this.bufferLength)
+                        this.readBlock();
+                    if (this.eof)
+                        break;
+                    if (length == size) {
+                        var oldSize = size;
+                        size <<= 1;
+                        var oldBytes = bytes;
+                        bytes = new Uint8Array(size);
+                        for (var i = 0; i < oldSize; ++i)
+                            bytes[i] = oldBytes[i];
+                    }
+                    bytes[length++] = this.buffer[this.pos++];
+                }
+                return bytes.subarray(0, length);
             }
-            return bytes;
         },
         getChar : function() {
             return String.fromCharCode(this.getByte());
@@ -1441,8 +1463,8 @@ var Parser = (function() {
             if (IsArray(filter)) {
                 var filterArray = filter;
                 var paramsArray = params;
-                for (var i = 0, ii = filter.length; i < ii; ++i) {
-                    filter = filter[i];
+                for (var i = 0, ii = filterArray.length; i < ii; ++i) {
+                    filter = filterArray[i];
                     if (!IsName(filter))
                         error("Bad filter name");
                     else {