You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2013/08/26 15:47:25 UTC

svn commit: r1517538 - in /openoffice/branches/AOO401/main/svgio: ./ inc/svgio/svgreader/ source/svgreader/

Author: alg
Date: Mon Aug 26 13:47:25 2013
New Revision: 1517538

URL: http://svn.apache.org/r1517538
Log:
122600: solve access memory problem of <SvgSvgNode::getCurrentViewPort()>
patch by: orw
review by: alg

Modified:
    openoffice/branches/AOO401/main/svgio/   (props changed)
    openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgmarkernode.hxx
    openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgnode.hxx
    openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgpatternnode.hxx
    openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx
    openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgtools.hxx
    openoffice/branches/AOO401/main/svgio/source/svgreader/svgmarkernode.cxx
    openoffice/branches/AOO401/main/svgio/source/svgreader/svgnode.cxx
    openoffice/branches/AOO401/main/svgio/source/svgreader/svgpatternnode.cxx
    openoffice/branches/AOO401/main/svgio/source/svgreader/svgsvgnode.cxx
    openoffice/branches/AOO401/main/svgio/source/svgreader/svgtools.cxx

Propchange: openoffice/branches/AOO401/main/svgio/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Aug 26 13:47:25 2013
@@ -0,0 +1,7 @@
+/incubator/ooo/branches/AOO34/main/svgio:1346776-1346777,1347535,1348052,1348914,1350569,1352456,1358991,1359004,1359010,1359024,1359546-1359547,1359553,1359555-1359556,1360552,1368968,1369110,1371068
+/incubator/ooo/branches/alg/linecap/main/svgio:1226811-1232461
+/incubator/ooo/branches/alg/svgreplacement/main/svgio:1205420-1220782
+/incubator/ooo/branches/writer001/main/svgio:1356067-1386577
+/openoffice/branches/alg/clibboard/main/svgio:1428975-1437368
+/openoffice/branches/sidebar/main/svgio:1415095-1466374
+/openoffice/trunk/main/svgio:1506958,1509224,1509576,1510489,1510954,1512298,1512966,1513112,1515312,1515732,1515749,1515762,1516122,1516435,1516789,1516794

Modified: openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgmarkernode.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgmarkernode.hxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgmarkernode.hxx (original)
+++ openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgmarkernode.hxx Mon Aug 26 13:47:25 2013
@@ -74,7 +74,7 @@ namespace svgio
             const drawinglayer::primitive2d::Primitive2DSequence& getMarkerPrimitives() const;
 
             /// InfoProvider support for % values
-            virtual const basegfx::B2DRange* getCurrentViewPort() const;
+            virtual const basegfx::B2DRange getCurrentViewPort() const;
 
             /// viewBox content
             const basegfx::B2DRange* getViewBox() const { return mpViewBox; }

Modified: openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgnode.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgnode.hxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgnode.hxx (original)
+++ openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgnode.hxx Mon Aug 26 13:47:25 2013
@@ -62,19 +62,19 @@ namespace svgio
         // display property (see SVG 1.1. 11.5), not inheritable
         enum Display // #121656#
         {
-            Display_inline, // the default
-            Display_block,
-            Display_list_item,
-            Display_run_in,
-            Display_compact,
-            Display_marker,
-            Display_table,
-            Display_inline_table,
-            Display_table_row_group,
-            Display_table_header_group,
-            Display_table_footer_group,
-            Display_table_row,
-            Display_table_column_group,
+            Display_inline, // the default
+            Display_block,
+            Display_list_item,
+            Display_run_in,
+            Display_compact,
+            Display_marker,
+            Display_table,
+            Display_inline_table,
+            Display_table_row_group,
+            Display_table_header_group,
+            Display_table_footer_group,
+            Display_table_row,
+            Display_table_column_group,
             Display_table_column,
             Display_table_cell,
             Display_table_caption,
@@ -137,7 +137,7 @@ namespace svgio
             const SvgNodeVector& getChildren() const { return maChildren; }
 
             /// InfoProvider support for %, em and ex values
-            virtual const basegfx::B2DRange* getCurrentViewPort() const;
+            virtual const basegfx::B2DRange getCurrentViewPort() const;
             virtual double getCurrentFontSize() const;
             virtual double getCurrentXHeight() const;
 

Modified: openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgpatternnode.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgpatternnode.hxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgpatternnode.hxx (original)
+++ openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgpatternnode.hxx Mon Aug 26 13:47:25 2013
@@ -77,7 +77,7 @@ namespace svgio
             const drawinglayer::primitive2d::Primitive2DSequence& getPatternPrimitives() const;
 
             /// InfoProvider support for % values
-            virtual const basegfx::B2DRange* getCurrentViewPort() const;
+            virtual const basegfx::B2DRange getCurrentViewPort() const;
 
             /// viewBox content
             const basegfx::B2DRange* getViewBox() const;

Modified: openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx (original)
+++ openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgsvgnode.hxx Mon Aug 26 13:47:25 2013
@@ -65,7 +65,7 @@ namespace svgio
             // The returned 'CurrentViewPort' is the viewport as it is set by this svg element
             // and as it is needed to resolve relative values in childs
             // The method does not check for invalid width and height
-            virtual const basegfx::B2DRange* getCurrentViewPort() const;
+            virtual const basegfx::B2DRange getCurrentViewPort() const;
 
             /// viewBox content
             const basegfx::B2DRange* getViewBox() const { return mpViewBox; }

Modified: openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgtools.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgtools.hxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgtools.hxx (original)
+++ openoffice/branches/AOO401/main/svgio/inc/svgio/svgreader/svgtools.hxx Mon Aug 26 13:47:25 2013
@@ -68,7 +68,7 @@ namespace svgio
         class InfoProvider
         {
         public:
-            virtual const basegfx::B2DRange* getCurrentViewPort() const = 0;
+            virtual const basegfx::B2DRange getCurrentViewPort() const = 0;
             virtual double getCurrentFontSize() const = 0;
             virtual double getCurrentXHeight() const = 0;
         };

Modified: openoffice/branches/AOO401/main/svgio/source/svgreader/svgmarkernode.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/source/svgreader/svgmarkernode.cxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/source/svgreader/svgmarkernode.cxx (original)
+++ openoffice/branches/AOO401/main/svgio/source/svgreader/svgmarkernode.cxx Mon Aug 26 13:47:25 2013
@@ -196,11 +196,11 @@ namespace svgio
             return aPrimitives;
         }
 
-        const basegfx::B2DRange* SvgMarkerNode::getCurrentViewPort() const
+        const basegfx::B2DRange SvgMarkerNode::getCurrentViewPort() const
         {
             if(getViewBox())
             {
-                return getViewBox();
+                return *(getViewBox());
             }
             else
             {

Modified: openoffice/branches/AOO401/main/svgio/source/svgreader/svgnode.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/source/svgreader/svgnode.cxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/source/svgreader/svgnode.cxx (original)
+++ openoffice/branches/AOO401/main/svgio/source/svgreader/svgnode.cxx Mon Aug 26 13:47:25 2013
@@ -229,20 +229,20 @@ namespace svgio
         {
             if(aContent.getLength())
             {
-                static rtl::OUString aStrInline(rtl::OUString::createFromAscii("inline"));
-                static rtl::OUString aStrBlock(rtl::OUString::createFromAscii("block"));
-                static rtl::OUString aStrList_item(rtl::OUString::createFromAscii("list-item"));
-                static rtl::OUString aStrRun_in(rtl::OUString::createFromAscii("run-in"));
-                static rtl::OUString aStrCompact(rtl::OUString::createFromAscii("compact"));
-                static rtl::OUString aStrMarker(rtl::OUString::createFromAscii("marker"));
-                static rtl::OUString aStrTable(rtl::OUString::createFromAscii("table"));
-                static rtl::OUString aStrInline_table(rtl::OUString::createFromAscii("inline-table"));
-                static rtl::OUString aStrTable_row_group(rtl::OUString::createFromAscii("table-row-group"));
-                static rtl::OUString aStrTable_header_group(rtl::OUString::createFromAscii("table-header-group"));
-                static rtl::OUString aStrTable_footer_group(rtl::OUString::createFromAscii("table-footer-group"));
-                static rtl::OUString aStrTable_row(rtl::OUString::createFromAscii("table-row"));
-                static rtl::OUString aStrTable_column_group(rtl::OUString::createFromAscii("table-column-group"));
-                static rtl::OUString aStrTable_column(rtl::OUString::createFromAscii("table-column"));
+                static rtl::OUString aStrInline(rtl::OUString::createFromAscii("inline"));
+                static rtl::OUString aStrBlock(rtl::OUString::createFromAscii("block"));
+                static rtl::OUString aStrList_item(rtl::OUString::createFromAscii("list-item"));
+                static rtl::OUString aStrRun_in(rtl::OUString::createFromAscii("run-in"));
+                static rtl::OUString aStrCompact(rtl::OUString::createFromAscii("compact"));
+                static rtl::OUString aStrMarker(rtl::OUString::createFromAscii("marker"));
+                static rtl::OUString aStrTable(rtl::OUString::createFromAscii("table"));
+                static rtl::OUString aStrInline_table(rtl::OUString::createFromAscii("inline-table"));
+                static rtl::OUString aStrTable_row_group(rtl::OUString::createFromAscii("table-row-group"));
+                static rtl::OUString aStrTable_header_group(rtl::OUString::createFromAscii("table-header-group"));
+                static rtl::OUString aStrTable_footer_group(rtl::OUString::createFromAscii("table-footer-group"));
+                static rtl::OUString aStrTable_row(rtl::OUString::createFromAscii("table-row"));
+                static rtl::OUString aStrTable_column_group(rtl::OUString::createFromAscii("table-column-group"));
+                static rtl::OUString aStrTable_column(rtl::OUString::createFromAscii("table-column"));
                 static rtl::OUString aStrTable_cell(rtl::OUString::createFromAscii("table-cell"));
                 static rtl::OUString aStrTable_caption(rtl::OUString::createFromAscii("table-caption"));
                 static rtl::OUString aStrNone(rtl::OUString::createFromAscii("none"));
@@ -260,55 +260,55 @@ namespace svgio
                 {
                     return Display_inherit;
                 }
-                else if(aContent.match(aStrBlock))
+                else if(aContent.match(aStrBlock))
                 {
                     return Display_block;
                 }
-                else if(aContent.match(aStrList_item))
+                else if(aContent.match(aStrList_item))
                 {
                     return Display_list_item;
                 }
-                else if(aContent.match(aStrRun_in))
+                else if(aContent.match(aStrRun_in))
                 {
                     return Display_run_in;
                 }
-                else if(aContent.match(aStrCompact))
+                else if(aContent.match(aStrCompact))
                 {
                     return Display_compact;
                 }
-                else if(aContent.match(aStrMarker))
+                else if(aContent.match(aStrMarker))
                 {
                     return Display_marker;
                 }
-                else if(aContent.match(aStrTable))
+                else if(aContent.match(aStrTable))
                 {
                     return Display_table;
                 }
-                else if(aContent.match(aStrInline_table))
+                else if(aContent.match(aStrInline_table))
                 {
                     return Display_inline_table;
                 }
-                else if(aContent.match(aStrTable_row_group))
+                else if(aContent.match(aStrTable_row_group))
                 {
                     return Display_table_row_group;
                 }
-                else if(aContent.match(aStrTable_header_group))
+                else if(aContent.match(aStrTable_header_group))
                 {
                     return Display_table_header_group;
                 }
-                else if(aContent.match(aStrTable_footer_group))
+                else if(aContent.match(aStrTable_footer_group))
                 {
                     return Display_table_footer_group;
                 }
-                else if(aContent.match(aStrTable_row))
+                else if(aContent.match(aStrTable_row))
                 {
                     return Display_table_row;
                 }
-                else if(aContent.match(aStrTable_column_group))
+                else if(aContent.match(aStrTable_column_group))
                 {
                     return Display_table_column_group;
                 }
-                else if(aContent.match(aStrTable_column))
+                else if(aContent.match(aStrTable_column))
                 {
                     return Display_table_column;
                 }
@@ -485,7 +485,7 @@ namespace svgio
             }
         }
 
-        const basegfx::B2DRange* SvgNode::getCurrentViewPort() const
+        const basegfx::B2DRange SvgNode::getCurrentViewPort() const
         {
             if(getParent())
             {
@@ -493,7 +493,7 @@ namespace svgio
             }
             else
             {
-                return 0;
+                return basegfx::B2DRange(); // return empty B2DRange
             }
         }
 

Modified: openoffice/branches/AOO401/main/svgio/source/svgreader/svgpatternnode.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/source/svgreader/svgpatternnode.cxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/source/svgreader/svgpatternnode.cxx (original)
+++ openoffice/branches/AOO401/main/svgio/source/svgreader/svgpatternnode.cxx Mon Aug 26 13:47:25 2013
@@ -293,11 +293,11 @@ namespace svgio
             return aPrimitives;
         }
 
-        const basegfx::B2DRange* SvgPatternNode::getCurrentViewPort() const
+        const basegfx::B2DRange SvgPatternNode::getCurrentViewPort() const
         {
             if(getViewBox())
             {
-                return getViewBox();
+                return *(getViewBox());
             }
             else
             {

Modified: openoffice/branches/AOO401/main/svgio/source/svgreader/svgsvgnode.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/source/svgreader/svgsvgnode.cxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/source/svgreader/svgsvgnode.cxx (original)
+++ openoffice/branches/AOO401/main/svgio/source/svgreader/svgsvgnode.cxx Mon Aug 26 13:47:25 2013
@@ -605,11 +605,11 @@ namespace svgio
             }
         }
 
-        const basegfx::B2DRange* SvgSvgNode::getCurrentViewPort() const
+        const basegfx::B2DRange SvgSvgNode::getCurrentViewPort() const
         {
             if(getViewBox())
             {
-                return getViewBox();
+                return *(getViewBox());
             }
             else // viewport should be given by x, y, width, and height
             {
@@ -633,7 +633,7 @@ namespace svgio
 
                     if (bXIsAbsolute && bYIsAbsolute && bWidthIsAbsolute && bHeightIsAbsolute)
                     {
-                        return &basegfx::B2DRange(fX, fY, fX+fW, fY+fH);
+                        return basegfx::B2DRange(fX, fY, fX+fW, fY+fH);
                     }
                     else // try to resolve relative values
                     {
@@ -676,7 +676,7 @@ namespace svgio
 
                         if (bXIsAbsolute && bYIsAbsolute && bWidthIsAbsolute && bHeightIsAbsolute)
                         {
-                            return &basegfx::B2DRange(fX, fY, fX+fW, fY+fH);
+                            return basegfx::B2DRange(fX, fY, fX+fW, fY+fH);
                         }
                         else // relative values could not be resolved, there exists no fallback
                         {
@@ -695,7 +695,7 @@ namespace svgio
                     double fH( bHeightIsAbsolute ? getHeight().solveNonPercentage(*this) : 0.0);
                     if (bWidthIsAbsolute && bHeightIsAbsolute)
                     {
-                        return &basegfx::B2DRange(0.0, 0.0, fW, fH);
+                        return basegfx::B2DRange(0.0, 0.0, fW, fH);
                     }
                     else // no fallback exists
                     {

Modified: openoffice/branches/AOO401/main/svgio/source/svgreader/svgtools.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO401/main/svgio/source/svgreader/svgtools.cxx?rev=1517538&r1=1517537&r2=1517538&view=diff
==============================================================================
--- openoffice/branches/AOO401/main/svgio/source/svgreader/svgtools.cxx (original)
+++ openoffice/branches/AOO401/main/svgio/source/svgreader/svgtools.cxx Mon Aug 26 13:47:25 2013
@@ -237,40 +237,39 @@ namespace svgio
                     case Unit_percent:
                     {
                         double fRetval(mfNumber * 0.01);
-                        const basegfx::B2DRange* pViewPort = rInfoProvider.getCurrentViewPort();
+                        basegfx::B2DRange aViewPort = rInfoProvider.getCurrentViewPort();
                         
-                        if(!pViewPort)
+                        if ( aViewPort.isEmpty() )
                         {
 #ifdef DBG_UTIL
                             myAssert(rtl::OUString::createFromAscii("Design error, this case should have been handled in the caller"));
 #endif
                             // no viewPort, assume a normal page size (A4)
-                            static basegfx::B2DRange aDinA4Range(
+                            aViewPort = basegfx::B2DRange(
                                 0.0,
                                 0.0,
                                 210.0 * F_SVG_PIXEL_PER_INCH / 2.54,
                                 297.0 * F_SVG_PIXEL_PER_INCH / 2.54);
 
-                            pViewPort = &aDinA4Range;
                         }
 
-                        if(pViewPort)
+                        if ( !aViewPort.isEmpty() )
                         {
                             if(xcoordinate == aNumberType)
                             {
                                 // it's a x-coordinate, relative to current width (w)
-                                fRetval *= pViewPort->getWidth();
+                                fRetval *= aViewPort.getWidth();
                             }
                             else if(ycoordinate == aNumberType)
                             {
                                 // it's a y-coordinate, relative to current height (h)
-                                fRetval *= pViewPort->getHeight();
+                                fRetval *= aViewPort.getHeight();
                             }
                             else // length
                             {
                                 // it's a length, relative to sqrt(w*w + h*h)/sqrt(2)
-                                const double fCurrentWidth(pViewPort->getWidth());
-                                const double fCurrentHeight(pViewPort->getHeight());
+                                const double fCurrentWidth(aViewPort.getWidth());
+                                const double fCurrentHeight(aViewPort.getHeight());
                                 const double fCurrentLength(
                                     sqrt(fCurrentWidth * fCurrentWidth + fCurrentHeight * fCurrentHeight)/sqrt(2.0));