From 1d00b89285e44d55c1bedcf0fcc5df941e463b81 Mon Sep 17 00:00:00 2001
From: notmasteryet <async.processingjs@yahoo.com>
Date: Sat, 17 Sep 2011 10:32:42 -0500
Subject: [PATCH] Modifying how the artofwar encryption handled; add wdsg_fitc
 as reftest

---
 pdf.js                       | 11 +++++++++--
 test/pdfs/wdsg_fitc.pdf.link |  1 +
 test/test_manifest.json      |  6 ++++++
 3 files changed, 16 insertions(+), 2 deletions(-)
 create mode 100644 test/pdfs/wdsg_fitc.pdf.link

diff --git a/pdf.js b/pdf.js
index 599e50af8..6a79cdf21 100644
--- a/pdf.js
+++ b/pdf.js
@@ -3224,7 +3224,14 @@ var XRef = (function() {
           error('bad XRef entry');
         }
         if (this.encrypt && !suppressEncryption) {
-          e = parser.getObj(this.encrypt.createCipherTransform(num, gen));
+          try {
+            e = parser.getObj(this.encrypt.createCipherTransform(num, gen));
+          } catch(ex) {
+            // almost all streams must to encrypted, but sometimes
+            // they are not probably due to some broken generators
+            // re-trying without encryption
+            return this.fetch(ref, true);
+          }
         } else {
           e = parser.getObj();
         }
@@ -4381,7 +4388,7 @@ var PartialEvaluator = (function() {
       if (type == 'TrueType' && dict.has('ToUnicode') && differences) {
         var cmapObj = dict.get('ToUnicode');
         if (IsRef(cmapObj)) {
-          cmapObj = xref.fetch(cmapObj, true);
+          cmapObj = xref.fetch(cmapObj);
         }
         if (IsName(cmapObj)) {
           error('ToUnicode file cmap translation not implemented');
diff --git a/test/pdfs/wdsg_fitc.pdf.link b/test/pdfs/wdsg_fitc.pdf.link
new file mode 100644
index 000000000..77d3b590d
--- /dev/null
+++ b/test/pdfs/wdsg_fitc.pdf.link
@@ -0,0 +1 @@
+http://www.airgid.com/book/wdsg_fitc.pdf
diff --git a/test/test_manifest.json b/test/test_manifest.json
index 3734ee9e4..926e37c18 100644
--- a/test/test_manifest.json
+++ b/test/test_manifest.json
@@ -115,5 +115,11 @@
        "link": true,
        "rounds": 1,
        "type": "eq"
+    },
+    {  "id": "wdsg_fitc",
+       "file": "pdfs/wdsg_fitc.pdf",
+       "link": true,
+       "rounds": 1,
+       "type": "eq"
     }
 ]