You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by pe...@apache.org on 2015/10/19 14:48:41 UTC

svn commit: r1709405 - in /openoffice/branches/AOO410/main: ./ i18npool/source/search/textsearch.cxx

Author: pescetti
Date: Mon Oct 19 12:48:41 2015
New Revision: 1709405

URL: http://svn.apache.org/viewvc?rev=1709405&view=rev
Log:
#i107619# Use next index to the last position from the offset when the match result is started at the end of the string.
Patch by: hanya

Modified:
    openoffice/branches/AOO410/main/   (props changed)
    openoffice/branches/AOO410/main/i18npool/source/search/textsearch.cxx

Propchange: openoffice/branches/AOO410/main/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Oct 19 12:48:41 2015
@@ -2,4 +2,4 @@
 /openoffice/branches/ia2/main:1417739-1541842
 /openoffice/branches/ooxml-osba/main:1546391,1546395,1546574,1546934,1547030,1547392,1551920,1551954,1551958,1552283
 /openoffice/branches/rejuvenate01/main:1480411,1534063,1534098,1536312,1549902,1560617
-/openoffice/trunk/main:1571617,1571677,1572569,1572577,1573547,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585171,1585261,1586242,1586249,1586583,1587468,1589050,1591501,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602791,1602823,1602850,1603416,1603897,1603941,1604028,1604709,1604786,1605044,1605355,1605689,1606055,1606061,1606706,1607111,1607793,1607836,1608348,1608376,1608730,1608733,1609204,1609208,1609302,1609426,1610347,1610411,1610422,1610671,1611470,1611549,1612070-1612071,1612539,1612801,1616457,1616944,1620195,1621121,1623847,1623849-1623850,1630814,1633294,1633297,1635806,1642300-1642302,1643177,1650314,1654282,1669457,1669459,1669462-1669463,1669465,1677190,1687177,1689883,1689959,1692551,1694132,1694701,1695962,1697807,1700078,170012
 6,1700135,1702107,1702894,1702898,1702986,1702988,1705193,1705196,1705199,1705276,1705364,1705368-1705369,1705542,1706649,1707167,1707169-1707170,1707175,1707397,1707408,1707412,1707642,1707645,1708477,1708483,1709212,1709403
+/openoffice/trunk/main:1571617,1571677,1572569,1572577,1573547,1574058,1574101,1575922,1576216,1576748,1578786,1579934,1580657,1580779,1581746,1581840,1582359,1582365,1582709,1583336,1583418,1583589,1583988,1585171,1585261,1586242,1586249,1586583,1587468,1589050,1591501,1592692,1592716,1594206,1595847,1595851,1595858,1596218,1596491,1596494,1597076,1597102,1597109,1599169,1599173-1599174,1600581,1600587,1600590,1600630,1600861,1600863,1600883,1602434,1602791,1602823,1602850,1603416,1603897,1603941,1604028,1604709,1604786,1605044,1605355,1605689,1606055,1606061,1606706,1607111,1607793,1607836,1608348,1608376,1608730,1608733,1609204,1609208,1609302,1609426,1610347,1610411,1610422,1610671,1611470,1611549,1612070-1612071,1612539,1612801,1616457,1616944,1620195,1621121,1623847,1623849-1623850,1630814,1633294,1633297,1635806,1642300-1642302,1643177,1650314,1654282,1669457,1669459,1669462-1669463,1669465,1677190,1687177,1689883,1689959,1692551,1694132,1694701,1695962,1697807,1700078,170012
 6,1700135,1702107,1702894,1702898,1702986,1702988,1705193,1705196,1705199,1705276,1705364,1705368-1705369,1705542,1706649,1707167,1707169-1707170,1707175,1707397,1707408,1707412,1707642,1707645,1707844,1708477,1708483,1709212,1709403

Modified: openoffice/branches/AOO410/main/i18npool/source/search/textsearch.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/i18npool/source/search/textsearch.cxx?rev=1709405&r1=1709404&r2=1709405&view=diff
==============================================================================
--- openoffice/branches/AOO410/main/i18npool/source/search/textsearch.cxx (original)
+++ openoffice/branches/AOO410/main/i18npool/source/search/textsearch.cxx Mon Oct 19 12:48:41 2015
@@ -241,10 +241,18 @@ SearchResult TextSearch::searchForward(
 
         sres = (this->*fnForward)( in_str, newStartPos, newEndPos );
 
+        sal_Int32 nOffsetLength = offset.getLength();
+        sal_Int32 nStartOffset = 0;
         for ( int k = 0; k < sres.startOffset.getLength(); k++ )
         {
-            if (sres.startOffset[k])
-	      sres.startOffset[k] = offset[sres.startOffset[k]];
+            nStartOffset = sres.startOffset[k];
+            if ( nStartOffset )
+            {
+                if ( nStartOffset < nOffsetLength )
+                    sres.startOffset[k] = offset[nStartOffset];
+                else
+                    sres.startOffset[k] = offset[offset.getLength()-1] +1;
+            }
             // JP 20.6.2001: end is ever exclusive and then don't return
             //               the position of the next character - return the
             //               next position behind the last found character!
@@ -330,6 +338,8 @@ SearchResult TextSearch::searchBackward(
 
         sres = (this->*fnBackward)( in_str, newStartPos, newEndPos );
 
+        sal_Int32 nOffsetLength = offset.getLength();
+        sal_Int32 nEndOffset = 0;
         for ( int k = 0; k < sres.startOffset.getLength(); k++ )
         {
             if (sres.startOffset[k])
@@ -338,8 +348,14 @@ SearchResult TextSearch::searchBackward(
             //               the position of the next character - return the
             //               next position behind the last found character!
             //               "a b c" find "b" must return 2,3 and not 2,4!!!
-            if (sres.endOffset[k])
-	      sres.endOffset[k] = offset[sres.endOffset[k]];
+            nEndOffset = sres.endOffset[k];
+            if ( nEndOffset )
+            {
+                if ( nEndOffset < nOffsetLength )
+                    sres.endOffset[k] = offset[nEndOffset];
+                else
+                    sres.endOffset[k] = offset[offset.getLength()-1] +1;
+            }
         }
     }
     else