]> git.parisson.com Git - pdf.js.git/commitdiff
use exceptions instead of error codes in case of errors
authorAndreas Gal <andreas.gal@gmail.com>
Wed, 11 May 2011 07:10:15 +0000 (00:10 -0700)
committerAndreas Gal <andreas.gal@gmail.com>
Wed, 11 May 2011 07:10:15 +0000 (00:10 -0700)
pdf.js

diff --git a/pdf.js b/pdf.js
index 92a9c4bb9ba6f3709341430147918dca957c73ed..8dd4c0e402f05f9104a0e2c166ec81dfc150200d 100644 (file)
--- a/pdf.js
+++ b/pdf.js
@@ -762,7 +762,7 @@ var FlateStream = (function() {
                 n = 1;
             while (n-- > 0)
                 this.getChar();
-        }
+        },
         generateHuffmanTable: function(lengths) {
             var n = lengths.length;
 
@@ -1589,6 +1589,9 @@ var XRef = (function() {
         var ref = this.trailerDict.get("Root");
         this.rootNum = ref.num;
         this.rootGen = ref.gen;
+
+        // set the xref for the trailer dictionary
+        this.trailerDict.xref = this;
     }
 
     constructor.prototype = {
@@ -1598,20 +1601,20 @@ var XRef = (function() {
                 if (IsCmd(obj = parser.getObj(), "trailer"))
                     break;
                 if (!IsInt(obj))
-                    return false;
+                    error("Invalid XRef table");
                 var first = obj;
                 if (!IsInt(obj = parser.getObj()))
-                    return false;
+                    error("Invalid XRef table");
                 var n = obj;
                 if (first < 0 || n < 0 || (first + n) != ((first + n) | 0))
-                    return false;
+                    error("Invalid XRef table");
                 for (var i = first; i < first + n; ++i) {
                     var entry = {};
                     if (!IsInt(obj = parser.getObj()))
-                        return false;
+                        error("Invalid XRef table");
                     entry.offset = obj;
                     if (!IsInt(obj = parser.getObj()))
-                        return false;
+                        error("Invalid XRef table");
                     entry.gen = obj;
                     obj = parser.getObj();
                     if (IsCmd(obj, "n")) {
@@ -1619,7 +1622,7 @@ var XRef = (function() {
                     } else if (IsCmd(obj, "f")) {
                         entry.free = true;
                     } else {
-                        return false;
+                        error("Invalid XRef table");
                     }
                     if (!this.entries[i]) {
                         // In some buggy PDF files the xref table claims to start at 1
@@ -1636,7 +1639,7 @@ var XRef = (function() {
             // read the trailer dictionary
             var dict;
             if (!IsDict(dict = parser.getObj()))
-                return false;
+                error("Invalid XRef table");
 
             // get the 'Prev' pointer
             var more = false;
@@ -1656,19 +1659,15 @@ var XRef = (function() {
             if (IsInt(obj = dict.get("XRefStm"))) {
                 var pos = obj;
                 if (pos in this.xrefstms)
-                    return false;
+                    error("Invalid XRef table");
                 this.xrefstms[pos] = 1; // avoid infinite recursion
                 this.readXRef(pos);
-            } else {
-                this.ok = true;
             }
 
             return more;
         },
         readXRefStream: function(parser) {
-            // TODO
-            this.ok = true;
-            return true;
+            error("Invalid XRef stream");
         },
         readXRef: function(startXRef) {
             var stream = this.stream;
@@ -1683,11 +1682,11 @@ var XRef = (function() {
                 if (!IsInt(parser.getObj()) ||
                     !IsCmd(parser.getObj(), "obj") ||
                     !IsStream(obj = parser.getObj())) {
-                    return false;
+                    error("Invalid XRef stream");
                 }
                 return this.readXRefStream(obj);
             }
-            return false;
+            error("Invalid XRef");
         }
     };
 
@@ -1786,7 +1785,6 @@ var PDFDoc = (function() {
             this.xref = new XRef(this.stream,
                                  this.startXRef,
                                  this.mainXRefEntriesOffset);
-            this.ok = this.xref.ok;
         }
     };