[poppler] 5 commits - splash/Splash.cc

Albert Astals Cid aacid at kemper.freedesktop.org
Sun Aug 18 07:43:00 PDT 2013


 splash/Splash.cc |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit 71c1d162477a243db07b62ef3c056a2946f8986e
Merge: 7d1de78 678c767
Author: Albert Astals Cid <aacid at kde.org>
Date:   Sun Aug 18 16:41:20 2013 +0200

    Merge remote-tracking branch 'origin/poppler-0.24'

commit 7d1de78ad79162217ee0ca6c2e99ce51017a327d
Merge: 7e0d969 fbea224
Author: Albert Astals Cid <aacid at kde.org>
Date:   Sun Aug 18 16:40:34 2013 +0200

    Merge commit 'origin/poppler-0.24~1'
    
    This is merging the revert commits with the "ours" strategy, so it's virtually
    doing nothing other than making the stable branch mergeable again to master

commit 678c767584fa80620cc58a1d8a913cb3473209d4
Author: Albert Astals Cid <aacid at kde.org>
Date:   Sun Aug 18 16:19:27 2013 +0200

    Fix crash in 1026.asan.0.42.pdf
    
    We were not checking that bitmapOff was in bounds

diff --git a/splash/Splash.cc b/splash/Splash.cc
index ccfe1ed..d5aec8f 100644
--- a/splash/Splash.cc
+++ b/splash/Splash.cc
@@ -5420,6 +5420,7 @@ GBool Splash::gouraudTriangleShadedFill(SplashGouraudColor *shading)
   SplashClip* clip = getClip();
   SplashBitmap *blitTarget = bitmap;
   SplashColorPtr bitmapData = bitmap->getDataPtr();
+  int bitmapOffLimit = bitmap->getHeight() * bitmap->getRowSize();
   SplashColorPtr bitmapAlpha = bitmap->getAlphaPtr();
   SplashColorPtr cur = NULL;
   SplashCoord* userToCanvasMatrix = getMatrix();
@@ -5652,7 +5653,7 @@ GBool Splash::gouraudTriangleShadedFill(SplashGouraudColor *shading)
         colorinterp = scanColorMap[0] * scanLimitL + scanColorMap[1];
 
         bitmapOff = scanLineOff + scanLimitL * colorComps;
-        for (int X = scanLimitL; X <= scanLimitR; ++X, colorinterp += scanColorMap[0], bitmapOff += colorComps) {
+        for (int X = scanLimitL; X <= scanLimitR && bitmapOff + colorComps <= bitmapOffLimit; ++X, colorinterp += scanColorMap[0], bitmapOff += colorComps) {
           // FIXME : standard rectangular clipping can be done for a
           // complete scanline which is faster
           // --> see SplashClip and its methods
commit fbea2241cccdde0106d2c34592b6ddda28a8d848
Author: Albert Astals Cid <aacid at kde.org>
Date:   Sat Aug 17 01:32:51 2013 +0200

    Revert "Tagged-PDF: Accessors in Catalog for the MarkInfo dictionary"
    
    This reverts commit 402ee8b4e31630a42a0a38db1d39164cc5789f3c.
    
    No clue how this ended up in the stable branch

diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc
index 25a8997..6bd511a 100644
--- a/poppler/Catalog.cc
+++ b/poppler/Catalog.cc
@@ -97,7 +97,6 @@ Catalog::Catalog(PDFDoc *docA) {
   attrsList = NULL;
   kidsIdxList = NULL;
   lastCachedPage = 0;
-  markInfo = markInfoNull;
 
   xref->getCatalog(&catDict);
   if (!catDict.isDict()) {
@@ -858,50 +857,6 @@ Object *Catalog::getStructTreeRoot()
   return &structTreeRoot;
 }
 
-Guint Catalog::getMarkInfo()
-{
-  if (markInfo == markInfoNull) {
-    markInfo = 0;
-
-    Object catDict;
-    catalogLocker();
-    xref->getCatalog(&catDict);
-
-    if (catDict.isDict()) {
-      Object markInfoDict;
-      catDict.dictLookup("MarkInfo", &markInfoDict);
-      if (markInfoDict.isDict()) {
-        Object value;
-
-        if (markInfoDict.dictLookup("Marked", &value)->isBool() && value.getBool())
-          markInfo |= markInfoMarked;
-        else if (!value.isNull())
-          error(errSyntaxError, -1, "Marked object is wrong type ({0:s})", value.getTypeName());
-        value.free();
-
-        if (markInfoDict.dictLookup("Suspects", &value)->isBool() && value.getBool())
-          markInfo |= markInfoSuspects;
-        else if (!value.isNull())
-          error(errSyntaxError, -1, "Suspects object is wrong type ({0:s})", value.getTypeName());
-        value.free();
-
-        if (markInfoDict.dictLookup("UserProperties", &value)->isBool() && value.getBool())
-          markInfo |= markInfoUserProperties;
-        else if (!value.isNull())
-          error(errSyntaxError, -1, "UserProperties object is wrong type ({0:s})", value.getTypeName());
-        value.free();
-      } else if (!markInfoDict.isNull()) {
-        error(errSyntaxError, -1, "MarkInfo object is wrong type ({0:s})", markInfoDict.getTypeName());
-      }
-      markInfoDict.free();
-    } else {
-      error(errSyntaxError, -1, "Catalog object is wrong type ({0:s})", catDict.getTypeName());
-    }
-    catDict.free();
-  }
-  return markInfo;
-}
-
 Object *Catalog::getOutline()
 {
   catalogLocker();
diff --git a/poppler/Catalog.h b/poppler/Catalog.h
index a89d9aa..24a3dcf 100644
--- a/poppler/Catalog.h
+++ b/poppler/Catalog.h
@@ -125,15 +125,6 @@ public:
   // Return the structure tree root object.
   Object *getStructTreeRoot();
 
-  // Return values from the MarkInfo dictionary as flags in a bitfield.
-  enum MarkInfoFlags {
-    markInfoNull           = 1 << 0,
-    markInfoMarked         = 1 << 1,
-    markInfoUserProperties = 1 << 2,
-    markInfoSuspects       = 1 << 3,
-  };
-  Guint getMarkInfo();
-
   // Find a page, given its object ID.  Returns page number, or 0 if
   // not found.
   int findPage(int num, int gen);
@@ -228,7 +219,6 @@ private:
   GooString *baseURI;		// base URI for URI-type links
   Object metadata;		// metadata stream
   Object structTreeRoot;	// structure tree root dictionary
-  Guint markInfo;               // Flags from MarkInfo dictionary
   Object outline;		// outline dictionary
   Object acroForm;		// AcroForm dictionary
   Object viewerPreferences;     // ViewerPreference dictionary
commit 6d2771b8a8c0cb0f2288d0900fea3c9edc3dd172
Author: Albert Astals Cid <aacid at kde.org>
Date:   Sat Aug 17 01:32:38 2013 +0200

    Revert "pdfinfo: Use Catalog::getMarkInfo() to show mark info properties"
    
    This reverts commit 73cca518c479594e26605196d54b429fbf42dcdc.
    
    No clue how this ended up in the stable branch

diff --git a/utils/pdfinfo.cc b/utils/pdfinfo.cc
index f297614..14e4f6c 100644
--- a/utils/pdfinfo.cc
+++ b/utils/pdfinfo.cc
@@ -225,12 +225,8 @@ int main(int argc, char *argv[]) {
   info.free();
 
   // print tagging info
-   printf("Tagged:         %s\n",
-	  (doc->getCatalog()->getMarkInfo() & Catalog::markInfoMarked) ? "yes" : "no");
-   printf("UserProperties: %s\n",
-	  (doc->getCatalog()->getMarkInfo() & Catalog::markInfoUserProperties) ? "yes" : "no");
-   printf("Suspects:       %s\n",
-	  (doc->getCatalog()->getMarkInfo() & Catalog::markInfoSuspects) ? "yes" : "no");
+  printf("Tagged:         %s\n",
+	 doc->getStructTreeRoot()->isDict() ? "yes" : "no");
 
   // print form info
   switch (doc->getCatalog()->getFormType())


More information about the poppler mailing list