Author: damjan
Date: Wed Feb 24 02:12:14 2016
New Revision: 1732010

URL: http://svn.apache.org/viewvc?rev=1732010&view=rev
Log:
Merge r1409445 from branches/gbuild:
#i116755# handle absolute paths in _rel

BUILDS


Modified:
    openoffice/branches/gbuild-reintegration/   (props changed)
    
openoffice/branches/gbuild-reintegration/main/writerfilter/source/ooxml/OOXMLStreamImpl.cxx

Propchange: openoffice/branches/gbuild-reintegration/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Feb 24 02:12:14 2016
@@ -1,4 +1,4 @@
-/incubator/ooo/branches/gbuild:1409313-1409425,1409428,1409432-1409436,1409438,1409440,1409442,1409444,1409470
+/incubator/ooo/branches/gbuild:1409313-1409425,1409428,1409432-1409436,1409438,1409440,1409442,1409444-1409445,1409470
 /openoffice/branches/AOO400:1503684
 /openoffice/branches/AOO410:1572480,1573601,1583349,1583635,1583666
 /openoffice/branches/alg_writerframes:1556289-1579189

Modified: 
openoffice/branches/gbuild-reintegration/main/writerfilter/source/ooxml/OOXMLStreamImpl.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/branches/gbuild-reintegration/main/writerfilter/source/ooxml/OOXMLStreamImpl.cxx?rev=1732010&r1=1732009&r2=1732010&view=diff
==============================================================================
--- 
openoffice/branches/gbuild-reintegration/main/writerfilter/source/ooxml/OOXMLStreamImpl.cxx
 (original)
+++ 
openoffice/branches/gbuild-reintegration/main/writerfilter/source/ooxml/OOXMLStreamImpl.cxx
 Wed Feb 24 02:12:14 2016
@@ -90,6 +90,42 @@ const ::rtl::OUString & OOXMLStreamImpl:
     return msTarget;
 }
 
+::rtl::OUString lcl_normalizeTarget(const ::rtl::OUString & s)
+{
+    const int nStringsToCut = 2;
+    const ::rtl::OUString aStringToCut[] = {
+        ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("./")),
+        ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) 
+    };
+
+    bool bDone = false;
+    sal_Int32 nIndex = 0;
+    while (!bDone)
+    {
+        for (int n = 0; n <= nStringsToCut; n++)
+        {
+            if (n == nStringsToCut)
+            {
+                bDone = true;
+            }
+            else
+            {
+                sal_Int32 nNewIndex = s.indexOf(aStringToCut[n], nIndex);
+
+                if (nIndex == nNewIndex)
+                {
+                    sal_Int32 nLength = aStringToCut[n].getLength();
+                    nIndex += nLength;
+
+                    break;
+                }
+            }
+        }
+    }
+
+    return s.copy(nIndex);
+}
+
 bool OOXMLStreamImpl::lcl_getTarget(uno::Reference<embed::XRelationshipAccess> 
                                     xRelationshipAccess,
                                     StreamType_t nStreamType, 
@@ -184,7 +220,7 @@ bool OOXMLStreamImpl::lcl_getTarget(uno:
                 else
                 {
                     rDocumentTarget = msPath;
-                    rDocumentTarget += sMyTarget;
+                    rDocumentTarget += lcl_normalizeTarget(sMyTarget);
                 }
                 
                 break;


Reply via email to