openoffice-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From a..@apache.org
Subject svn commit: r1630928 - in /openoffice/trunk/main/svgio: inc/svgio/svgreader/svgtools.hxx source/svgreader/svgdocumenthandler.cxx source/svgreader/svgtools.cxx
Date Fri, 10 Oct 2014 15:52:52 GMT
Author: alg
Date: Fri Oct 10 15:52:52 2014
New Revision: 1630928

URL: http://svn.apache.org/r1630928
Log:
i125325 added code to handle block comments in Css style definitions

Modified:
    openoffice/trunk/main/svgio/inc/svgio/svgreader/svgtools.hxx
    openoffice/trunk/main/svgio/source/svgreader/svgdocumenthandler.cxx
    openoffice/trunk/main/svgio/source/svgreader/svgtools.cxx

Modified: openoffice/trunk/main/svgio/inc/svgio/svgreader/svgtools.hxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/svgio/inc/svgio/svgreader/svgtools.hxx?rev=1630928&r1=1630927&r2=1630928&view=diff
==============================================================================
--- openoffice/trunk/main/svgio/inc/svgio/svgreader/svgtools.hxx (original)
+++ openoffice/trunk/main/svgio/inc/svgio/svgreader/svgtools.hxx Fri Oct 10 15:52:52 2014
@@ -236,6 +236,10 @@ namespace svgio
         rtl::OUString whiteSpaceHandlingDefault(const rtl::OUString& rCandidate);
         rtl::OUString whiteSpaceHandlingPreserve(const rtl::OUString& rCandidate);
 
+        // #125325# removes block comment of the general form '/* ... */', returns
+        // an adapted string or the original if no comments included
+        rtl::OUString removeBlockComments(const rtl::OUString& rCandidate);
+
     } // end of namespace svgreader
 } // end of namespace svgio
 

Modified: openoffice/trunk/main/svgio/source/svgreader/svgdocumenthandler.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/svgio/source/svgreader/svgdocumenthandler.cxx?rev=1630928&r1=1630927&r2=1630928&view=diff
==============================================================================
--- openoffice/trunk/main/svgio/source/svgreader/svgdocumenthandler.cxx (original)
+++ openoffice/trunk/main/svgio/source/svgreader/svgdocumenthandler.cxx Fri Oct 10 15:52:52
2014
@@ -512,7 +512,16 @@ namespace svgio
                     if(maCssContents.size())
                     {
                         // need to interpret css styles and remember them as StyleSheets
-                        pCssStyle->addCssStyleSheet(*(maCssContents.end() - 1));
+                        // #125325# Caution! the Css content may contain block comments
+                        // (see http://www.w3.org/wiki/CSS_basics#CSS_comments). These need
+                        // to be removed first
+                        const rtl::OUString aCommentFreeSource(removeBlockComments(*(maCssContents.end()
- 1)));
+
+                        if(aCommentFreeSource.getLength())
+                        {
+                            pCssStyle->addCssStyleSheet(aCommentFreeSource);
+                        }
+
                         maCssContents.pop_back();
                     }
                     else

Modified: openoffice/trunk/main/svgio/source/svgreader/svgtools.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/svgio/source/svgreader/svgtools.cxx?rev=1630928&r1=1630927&r2=1630928&view=diff
==============================================================================
--- openoffice/trunk/main/svgio/source/svgreader/svgtools.cxx (original)
+++ openoffice/trunk/main/svgio/source/svgreader/svgtools.cxx Fri Oct 10 15:52:52 2014
@@ -1538,6 +1538,57 @@ namespace svgio
             return rCandidate;
         }
 
+        // #125325#
+        rtl::OUString removeBlockComments(const rtl::OUString& rCandidate)
+        {
+            const sal_Int32 nLen(rCandidate.getLength());
+
+            if(nLen)
+            {
+                sal_Int32 nPos(0);
+                rtl::OUStringBuffer aBuffer;
+                bool bChanged(false);
+                sal_Int32 nInsideComment(0);
+                const sal_Unicode aCommentSlash('/');
+                const sal_Unicode aCommentStar('*');
+
+                while(nPos < nLen)
+                {
+                    const sal_Unicode aChar(rCandidate[nPos]);
+                    const bool bStart(aCommentSlash == aChar && nPos + 1 < nLen
&& aCommentStar == rCandidate[nPos + 1]);
+                    const bool bEnd(aCommentStar == aChar && nPos + 1 < nLen &&
aCommentSlash == rCandidate[nPos + 1]);
+
+                    if(bStart)
+                    {
+                        nPos += 2;
+                        nInsideComment++;
+                        bChanged = true;
+                    }
+                    else if(bEnd)
+                    {
+                        nPos += 2;
+                        nInsideComment--;
+                    }
+                    else
+                    {
+                        if(!nInsideComment)
+                        {
+                            aBuffer.append(aChar); 
+                        }
+
+                        nPos++;
+                    }
+                }
+
+                if(bChanged)
+                {
+                    return aBuffer.makeStringAndClear();
+                }
+            }
+
+            return rCandidate;
+        }
+
         rtl::OUString consolidateContiguosSpace(const rtl::OUString& rCandidate)
         {
             const sal_Int32 nLen(rCandidate.getLength());



Mime
View raw message