summaryrefslogtreecommitdiff
path: root/i18npool
diff options
context:
space:
mode:
authorJustin Luth <justin_luth@sil.org>2021-08-12 21:29:42 +0200
committerXisco Fauli <xiscofauli@libreoffice.org>2021-08-25 10:51:23 +0200
commit42a62ab46af52fae0592150ffe5e9ce8b39314b5 (patch)
tree13ddf149082e7dc34fa2eefb5a434ecadd550e8b /i18npool
parent83be3b84228a67315882b65dc51cc86dc9d9afcc (diff)
tdf#137737 i18n search: don't expand start/end with regex ^ or $
If the regex starts with ^, that means that it matches only at the beginning of the content. So don't expand the beginning of the content or else it won't match anymore. Similarly, $ indicates matching at the end of the content. For the unit test I just randomly guessed at SearchItem.AlgorithmType, and it kinda worked. I love black boxes... I hope I remember what i learned about TransformParameters() which was parsed in sfx2/source/appl/appuno.cxx, splitting the "variable" into Item.PropName = PropValue. That is definite black magic. Change-Id: Ie1640821a7a430e78dbe72c57a92aeaa9b5272a3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120410 Tested-by: Jenkins Reviewed-by: Justin Luth <justin_luth@sil.org> (cherry picked from commit a511bffd67a9cebfdc878766581ac08c79d7ff51) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120981 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'i18npool')
-rw-r--r--i18npool/source/search/textsearch.cxx4
1 files changed, 2 insertions, 2 deletions
diff --git a/i18npool/source/search/textsearch.cxx b/i18npool/source/search/textsearch.cxx
index dcb31762e6c2..e6ddd93c5be6 100644
--- a/i18npool/source/search/textsearch.cxx
+++ b/i18npool/source/search/textsearch.cxx
@@ -333,7 +333,7 @@ SearchResult TextSearch::searchForward( const OUString& searchStr, sal_Int32 sta
// apply normal transliteration (1<->1, 1<->0)
sal_Int32 nInStartPos = startPos;
- if (pRegexMatcher && startPos > 0)
+ if (pRegexMatcher && startPos > 0 && !aSrchPara.searchString.startsWith("^"))
{
// tdf#89665, tdf#75806: An optimization to avoid transliterating the whole string, yet
// transliterate enough of the leading text to allow sensible look-behind assertions.
@@ -345,7 +345,7 @@ SearchResult TextSearch::searchForward( const OUString& searchStr, sal_Int32 sta
nInStartPos -= std::min(nMaxLeadingLen, startPos);
}
sal_Int32 nInEndPos = endPos;
- if (pRegexMatcher && endPos < searchStr.getLength())
+ if (pRegexMatcher && endPos < searchStr.getLength() && !aSrchPara.searchString.endsWith("$"))
{
// tdf#65038: ditto for look-ahead assertions
const sal_Int32 nMaxTrailingLen = aSrchPara.searchString.endsWith(")") ? 100 : 3;