[poppler] Branch 'poppler-0.22' - poppler/Gfx.cc

Albert Astals Cid aacid at kemper.freedesktop.org
Wed Mar 20 14:36:13 PDT 2013


 poppler/Gfx.cc |   20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

New commits:
commit a01e2d41fcb638fe340bd3d4d22bd13db245e0fd
Author: Thomas Freitag <Thomas.Freitag at alfa.de>
Date:   Wed Mar 20 22:35:08 2013 +0100

    check order bounding box values in tiling pattern
    
    Bug #62369

diff --git a/poppler/Gfx.cc b/poppler/Gfx.cc
index 5c9ed35..7047482 100644
--- a/poppler/Gfx.cc
+++ b/poppler/Gfx.cc
@@ -28,7 +28,7 @@
 // Copyright (C) 2008 Michael Vrable <mvrable at cs.ucsd.edu>
 // Copyright (C) 2008 Hib Eris <hib at hiberis.nl>
 // Copyright (C) 2009 M Joonas Pihlaja <jpihlaja at cc.helsinki.fi>
-// Copyright (C) 2009-2012 Thomas Freitag <Thomas.Freitag at alfa.de>
+// Copyright (C) 2009-2013 Thomas Freitag <Thomas.Freitag at alfa.de>
 // Copyright (C) 2009 William Bader <williambader at hotmail.com>
 // Copyright (C) 2009, 2010 David Benjamin <davidben at mit.edu>
 // Copyright (C) 2010 Nils Höglund <nils.hoglund at gmail.com>
@@ -2205,10 +2205,20 @@ void Gfx::doTilingPatternFill(GfxTilingPattern *tPat,
   //~ edge instead of left/bottom (?)
   xstep = fabs(tPat->getXStep());
   ystep = fabs(tPat->getYStep());
-  xi0 = (int)ceil((xMin - tPat->getBBox()[2]) / xstep);
-  xi1 = (int)floor((xMax - tPat->getBBox()[0]) / xstep) + 1;
-  yi0 = (int)ceil((yMin - tPat->getBBox()[3]) / ystep);
-  yi1 = (int)floor((yMax - tPat->getBBox()[1]) / ystep) + 1;
+  if (tPat->getBBox()[0] < tPat->getBBox()[2]) {
+    xi0 = (int)ceil((xMin - tPat->getBBox()[2]) / xstep);
+    xi1 = (int)floor((xMax - tPat->getBBox()[0]) / xstep) + 1;
+  } else {
+    xi0 = (int)ceil((xMin - tPat->getBBox()[0]) / xstep);
+    xi1 = (int)floor((xMax - tPat->getBBox()[2]) / xstep) + 1;
+  }
+  if (tPat->getBBox()[1] < tPat->getBBox()[3]) {
+    yi0 = (int)ceil((yMin - tPat->getBBox()[3]) / ystep);
+    yi1 = (int)floor((yMax - tPat->getBBox()[1]) / ystep) + 1;
+  } else {
+    yi0 = (int)ceil((yMin - tPat->getBBox()[1]) / ystep);
+    yi1 = (int)floor((yMax - tPat->getBBox()[3]) / ystep) + 1;
+  }
   for (i = 0; i < 4; ++i) {
     m1[i] = m[i];
   }


More information about the poppler mailing list