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