Author: jghali
Date: Wed Sep 20 21:31:36 2017
New Revision: 22159

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22159
Log:
fix some cases of potential use of invalid pattern

Modified:
    trunk/Scribus/scribus/pageitem_line.cpp
    trunk/Scribus/scribus/scpageoutput.cpp

Modified: trunk/Scribus/scribus/pageitem_line.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22159&path=/trunk/Scribus/scribus/pageitem_line.cpp
==============================================================================
--- trunk/Scribus/scribus/pageitem_line.cpp     (original)
+++ trunk/Scribus/scribus/pageitem_line.cpp     Wed Sep 20 21:31:36 2017
@@ -62,7 +62,8 @@
        {
                if (NamedLStyle.isEmpty())
                {
-                       if ((!patternStrokeVal.isEmpty()) && 
(m_Doc->docPatterns.contains(patternStrokeVal)))
+                       ScPattern *strokePattern = 
m_Doc->checkedPattern(patternStrokeVal);
+                       if (strokePattern)
                        {
                                if (patternStrokePath)
                                {
@@ -73,7 +74,7 @@
                                }
                                else
                                {
-                                       
p->setPattern(&m_Doc->docPatterns[patternStrokeVal], patternStrokeScaleX, 
patternStrokeScaleY, patternStrokeOffsetX, patternStrokeOffsetY, 
patternStrokeRotation, patternStrokeSkewX, patternStrokeSkewY, 
patternStrokeMirrorX, patternStrokeMirrorY);
+                                       p->setPattern(strokePattern, 
patternStrokeScaleX, patternStrokeScaleY, patternStrokeOffsetX, 
patternStrokeOffsetY, patternStrokeRotation, patternStrokeSkewX, 
patternStrokeSkewY, patternStrokeMirrorX, patternStrokeMirrorY);
                                        p->setStrokeMode(ScPainter::Pattern);
                                        p->drawLine(FPoint(0, 0), 
FPoint(m_width, 0));
                                }

Modified: trunk/Scribus/scribus/scpageoutput.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22159&path=/trunk/Scribus/scribus/scpageoutput.cpp
==============================================================================
--- trunk/Scribus/scribus/scpageoutput.cpp      (original)
+++ trunk/Scribus/scribus/scpageoutput.cpp      Wed Sep 20 21:31:36 2017
@@ -235,7 +235,8 @@
        if (item->GrType == 8)
        {
                QString pat = item->pattern();
-               if ((pat.isEmpty()) || (!m_doc->docPatterns.contains(pat)))
+               ScPattern *pattern = m_doc->checkedPattern(pat);
+               if (!pattern)
                {
                        painter->m_fillGradient = 
VGradientEx(VGradientEx::linear);
                        if (item->fillColor() != CommonStrings::None)
@@ -249,12 +250,11 @@
                else
                {
                        QTransform patternTransform;
-                       ScPattern& pattern = 
m_doc->docPatterns[item->pattern()];
                        double patternScaleX, patternScaleY, patternOffsetX, 
patternOffsetY, patternRotation, patternSkewX, patternSkewY;
                        bool   patternMirrorX, patternMirrorY;
                        item->patternTransform(patternScaleX, patternScaleY, 
patternOffsetX, patternOffsetY, patternRotation, patternSkewX, patternSkewY);
                        item->patternFlip(patternMirrorX, patternMirrorY);
-                       painter->setPattern(&pattern, patternScaleX, 
patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX, 
patternSkewY, patternMirrorX, patternMirrorY);
+                       painter->setPattern(pattern, patternScaleX, 
patternScaleY, patternOffsetX, patternOffsetY, patternRotation, patternSkewX, 
patternSkewY, patternMirrorX, patternMirrorY);
                        painter->setFillMode(ScPainterExBase::Pattern);
                }
        }
@@ -376,11 +376,10 @@
        else if ((item->GrMask == 3) || (item->GrMask == 6) || (item->GrMask == 
7) || (item->GrMask == 8))
        {
                QString patternMaskVal = item->patternMaskVal;
-               if ((patternMaskVal.isEmpty()) || 
(!m_doc->docPatterns.contains(patternMaskVal)))
-                       painter->setMaskMode(0);
-               else
-               {
-                       
painter->setPatternMask(&m_doc->docPatterns[patternMaskVal], 
item->patternMaskScaleX, item->patternMaskScaleY, item->patternMaskOffsetX, 
item->patternMaskOffsetY, 
+               ScPattern *patternMask = m_doc->checkedPattern(patternMaskVal);
+               if (patternMask)
+               {
+                       painter->setPatternMask(patternMask, 
item->patternMaskScaleX, item->patternMaskScaleY, item->patternMaskOffsetX, 
item->patternMaskOffsetY,
                                                    item->patternMaskRotation, 
item->patternMaskSkewX, item->patternMaskSkewY, item->patternMaskMirrorX, 
item->patternMaskMirrorY);
                        if (item->GrMask == 3)
                                painter->setMaskMode(2);
@@ -391,6 +390,10 @@
                        else
                                painter->setMaskMode(6);
                }
+               else
+               {
+                       painter->setMaskMode(0);
+               }
        }
        else
                painter->setMaskMode(0);
@@ -422,7 +425,8 @@
                        if (item->NamedLStyle.isEmpty())
                        {
                                QString patternStrokeVal = 
item->strokePattern();
-                               if ((!patternStrokeVal.isEmpty()) && 
(m_doc->docPatterns.contains(patternStrokeVal)))
+                               ScPattern *strokePattern = 
m_doc->checkedPattern(patternStrokeVal);
+                               if (strokePattern)
                                {
                                        if (item->patternStrokePath)
                                        {
@@ -431,7 +435,7 @@
                                        }
                                        else
                                        {
-                                               
painter->setPattern(&m_doc->docPatterns[patternStrokeVal], 
item->patternStrokeScaleX, item->patternStrokeScaleY, 
item->patternStrokeOffsetX, item->patternStrokeOffsetY, 
item->patternStrokeRotation, item->patternStrokeSkewX, 
item->patternStrokeSkewY, item->patternStrokeMirrorX, 
item->patternStrokeMirrorY);
+                                               
painter->setPattern(strokePattern, item->patternStrokeScaleX, 
item->patternStrokeScaleY, item->patternStrokeOffsetX, 
item->patternStrokeOffsetY, item->patternStrokeRotation, 
item->patternStrokeSkewX, item->patternStrokeSkewY, item->patternStrokeMirrorX, 
item->patternStrokeMirrorY);
                                                
painter->setStrokeMode(ScPainterExBase::Pattern);
                                                painter->strokePath();
                                        }
@@ -827,7 +831,8 @@
        if (item->NamedLStyle.isEmpty())
        {
                QString patternStrokeVal = item->strokePattern();
-               if ((!patternStrokeVal.isEmpty()) && 
(m_doc->docPatterns.contains(patternStrokeVal)))
+               ScPattern *strokePattern = 
m_doc->checkedPattern(patternStrokeVal);
+               if (strokePattern)
                {
                        if (item->patternStrokePath)
                        {
@@ -838,7 +843,7 @@
                        }
                        else
                        {
-                               
painter->setPattern(&m_doc->docPatterns[patternStrokeVal], 
item->patternStrokeScaleX, item->patternStrokeScaleY, 
item->patternStrokeOffsetX, item->patternStrokeOffsetY, 
item->patternStrokeRotation, item->patternStrokeSkewX, 
item->patternStrokeSkewY, item->patternStrokeMirrorX, 
item->patternStrokeMirrorY);
+                               painter->setPattern(strokePattern, 
item->patternStrokeScaleX, item->patternStrokeScaleY, 
item->patternStrokeOffsetX, item->patternStrokeOffsetY, 
item->patternStrokeRotation, item->patternStrokeSkewX, 
item->patternStrokeSkewY, item->patternStrokeMirrorX, 
item->patternStrokeMirrorY);
                                
painter->setStrokeMode(ScPainterExBase::Pattern);
                                painter->strokePath();
                        }
@@ -1162,7 +1167,8 @@
        if (item->NamedLStyle.isEmpty())
        {
                QString patternStrokeVal = item->strokePattern();
-               if ((!patternStrokeVal.isEmpty()) && 
(m_doc->docPatterns.contains(patternStrokeVal)))
+               ScPattern *strokePattern = 
m_doc->checkedPattern(patternStrokeVal);
+               if (strokePattern)
                {
                        if (item->patternStrokePath)
                        {
@@ -1173,7 +1179,7 @@
                        }
                        else
                        {
-                               
painter->setPattern(&m_doc->docPatterns[patternStrokeVal], 
item->patternStrokeScaleX, item->patternStrokeScaleY, 
item->patternStrokeOffsetX, item->patternStrokeOffsetY, 
item->patternStrokeRotation, item->patternStrokeSkewX, 
item->patternStrokeSkewY, item->patternStrokeMirrorX, 
item->patternStrokeMirrorY);
+                               painter->setPattern(strokePattern, 
item->patternStrokeScaleX, item->patternStrokeScaleY, 
item->patternStrokeOffsetX, item->patternStrokeOffsetY, 
item->patternStrokeRotation, item->patternStrokeSkewX, 
item->patternStrokeSkewY, item->patternStrokeMirrorX, 
item->patternStrokeMirrorY);
                                
painter->setStrokeMode(ScPainterExBase::Pattern);
                                painter->strokePath();
                        }
@@ -1328,7 +1334,8 @@
        if (item->NamedLStyle.isEmpty())
        {
                QString patternStrokeVal = item->strokePattern();
-               if ((!patternStrokeVal.isEmpty()) && 
(m_doc->docPatterns.contains(patternStrokeVal)))
+               ScPattern *strokePattern = 
m_doc->checkedPattern(patternStrokeVal);
+               if (strokePattern)
                {
                        if (item->patternStrokePath)
                        {
@@ -1339,7 +1346,7 @@
                        }
                        else
                        {
-                               
painter->setPattern(&m_doc->docPatterns[patternStrokeVal], 
item->patternStrokeScaleX, item->patternStrokeScaleY, 
item->patternStrokeOffsetX, item->patternStrokeOffsetY, 
item->patternStrokeRotation, item->patternStrokeSkewX, 
item->patternStrokeSkewY, item->patternStrokeMirrorX, 
item->patternStrokeMirrorY);
+                               painter->setPattern(strokePattern, 
item->patternStrokeScaleX, item->patternStrokeScaleY, 
item->patternStrokeOffsetX, item->patternStrokeOffsetY, 
item->patternStrokeRotation, item->patternStrokeSkewX, 
item->patternStrokeSkewY, item->patternStrokeMirrorX, 
item->patternStrokeMirrorY);
                                
painter->setStrokeMode(ScPainterExBase::Pattern);
                                painter->strokePath();
                        }


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to