[Libreoffice-commits] core.git: i18npool/source

Matthew J. Francis mjay.francis at gmail.com
Tue Oct 7 10:49:06 PDT 2014


 i18npool/source/search/textsearch.cxx |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

New commits:
commit 555a7a601b33c18472be7e99b0f9c8acb05a82d7
Author: Matthew J. Francis <mjay.francis at gmail.com>
Date:   Tue Oct 7 01:51:37 2014 +0800

    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 at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>

diff --git a/i18npool/source/search/textsearch.cxx b/i18npool/source/search/textsearch.cxx
index ef8217b..98aa1b6 100644
--- a/i18npool/source/search/textsearch.cxx
+++ b/i18npool/source/search/textsearch.cxx
@@ -614,7 +614,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
@@ -685,7 +685,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


More information about the Libreoffice-commits mailing list