You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by or...@apache.org on 2012/08/21 15:28:29 UTC

svn commit: r1375536 - /incubator/ooo/trunk/main/sw/source/filter/ww8/ww8par5.cxx

Author: orw
Date: Tue Aug 21 13:28:29 2012
New Revision: 1375536

URL: http://svn.apache.org/viewvc?rev=1375536&view=rev
Log:
#119446# - method <SwWW8ImplReader::Read_Field(..)> - correct condition for fields containing '.' or '/'

         Found by: Yan Ji
         Patch by: zjchen
         Review by: Oliver

Modified:
    incubator/ooo/trunk/main/sw/source/filter/ww8/ww8par5.cxx

Modified: incubator/ooo/trunk/main/sw/source/filter/ww8/ww8par5.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/main/sw/source/filter/ww8/ww8par5.cxx?rev=1375536&r1=1375535&r2=1375536&view=diff
==============================================================================
--- incubator/ooo/trunk/main/sw/source/filter/ww8/ww8par5.cxx (original)
+++ incubator/ooo/trunk/main/sw/source/filter/ww8/ww8par5.cxx Tue Aug 21 13:28:29 2012
@@ -987,9 +987,16 @@ long SwWW8ImplReader::Read_Field(WW8PLCF
         pStrm->Seek( nOldPos );
 
         //#124725# field codes which contain '/' or '.' are not displayed in WinWord
-        if (!aStr.EqualsAscii(" ADDIN", 0, 6) &&
-            (aStr.Search('.') != STRING_NOTFOUND ||
-             aStr.Search('/') != STRING_NOTFOUND))
+        // skip if it is formula field or found space before. see #i119446, #i119585.
+        const xub_StrLen nDotPos = aStr.Search('.');
+        const xub_StrLen nSlashPos = aStr.Search('/');
+        xub_StrLen nSpacePos = aStr.Search( ' ', 1 );
+        if ( nSpacePos == STRING_NOTFOUND )
+            nSpacePos = aStr.Len();
+
+        if ( !( aStr.EqualsAscii( "=", 1, 1 ) ) && 
+            ((( nDotPos != STRING_NOTFOUND ) && ( nDotPos < nSpacePos )) ||
+            (( nSlashPos != STRING_NOTFOUND ) && ( nSlashPos < nSpacePos ))))
             return aF.nLen;
         else
             return aF.nLen - aF.nLRes - 1;  // so viele ueberlesen, das Resultfeld