diff options
author | Matthew J. Francis <mjay.francis@gmail.com> | 2014-10-07 01:51:37 +0800 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2014-10-07 18:02:00 +0000 |
commit | 25e7318a294c5613a9a2361e0e1cebd5c214d336 (patch) | |
tree | f83e97c0b920399adb8219868c64859f7cd16592 /i18npool | |
parent | 80d0985771f40316590ee8368d899ffb835c0035 (diff) |
Avoid accessing 1 character after a string
Found while trying to reproduce fdo#83141, but not related to
that - it just happened to trigger the relevant assert on a dbgutil
build.
The change to TextSearch::NSrchFrwrd() fixes the crash triggered
by reproducing the above bug.
The change to TextSearch::NSrchBkwrd() is by analogy but seems an
equally good idea.
Change-Id: I68c2c87b632dd53453f92394519a06f62e41bbad
Reviewed-on: https://gerrit.libreoffice.org/11830
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
(cherry picked from commit 555a7a601b33c18472be7e99b0f9c8acb05a82d7)
Reviewed-on: https://gerrit.libreoffice.org/11846
Diffstat (limited to 'i18npool')
-rw-r--r-- | i18npool/source/search/textsearch.cxx | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/i18npool/source/search/textsearch.cxx b/i18npool/source/search/textsearch.cxx index d95600d60936..e2d424f29b9c 100644 --- a/i18npool/source/search/textsearch.cxx +++ b/i18npool/source/search/textsearch.cxx @@ -615,7 +615,7 @@ SearchResult TextSearch::NSrchFrwrd( const OUString& searchStr, sal_Int32 startP bool bAtStart = !nCmpIdx; bool bAtEnd = nFndEnd == endPos; bool bDelimBefore = bAtStart || IsDelimiter( aStr, nCmpIdx-1 ); - bool bDelimBehind = IsDelimiter( aStr, nFndEnd ); + bool bDelimBehind = bAtEnd || IsDelimiter( aStr, nFndEnd ); // * 1 -> only one word in the paragraph // * 2 -> at begin of paragraph // * 3 -> at end of paragraph @@ -686,7 +686,7 @@ SearchResult TextSearch::NSrchBkwrd( const OUString& searchStr, sal_Int32 startP sal_Int32 nFndStt = nCmpIdx - sSearchKey.getLength(); bool bAtStart = !nFndStt; bool bAtEnd = nCmpIdx == startPos; - bool bDelimBehind = IsDelimiter( aStr, nCmpIdx ); + bool bDelimBehind = bAtEnd || IsDelimiter( aStr, nCmpIdx ); bool bDelimBefore = bAtStart || // begin of paragraph IsDelimiter( aStr, nFndStt-1 ); // * 1 -> only one word in the paragraph |