basic/qa/basic_coverage/test_string_replace.vb |    6 ++++++
 basic/source/runtime/methods.cxx               |    2 +-
 2 files changed, 7 insertions(+), 1 deletion(-)

New commits:
commit 4e8b26cd67451c73aff284bb800627ed6db05443
Author:     Andreas Heinisch <andreas.heini...@yahoo.de>
AuthorDate: Mon Mar 15 13:41:58 2021 +0100
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Mon Mar 15 20:46:37 2021 +0100

    tdf#141045 - fixed copy paste error in the replace function
    
    Change-Id: Id68670fed89e4cc700c5eea395139914bebdb657
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112509
    Tested-by: Jenkins
    Reviewed-by: Andreas Heinisch <andreas.heini...@yahoo.de>
    (cherry picked from commit ac0b6fb3842201e438950ea99a55ad334f8521ab)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112512
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>
    (cherry picked from commit fde29198bd8e345c9a61a9f4d4671a3022a84cf9)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112521
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/basic/qa/basic_coverage/test_string_replace.vb 
b/basic/qa/basic_coverage/test_string_replace.vb
index 99eafdba6b14..e2e9ce35962b 100644
--- a/basic/qa/basic_coverage/test_string_replace.vb
+++ b/basic/qa/basic_coverage/test_string_replace.vb
@@ -23,6 +23,12 @@ Function verify_stringReplace() As String
     retStr = Replace("АБВабв", "б", "*")
     TestLog_ASSERT retStr, "А*Ва*в", "case-insensitive non-ASCII: " & retStr
 
+    ' tdf#141045 - different length of search and replace string. It is 
important
+    ' that the search string starts with the original string in order to test 
the error.
+    ' Without the fix in place, the string index calculations result in a 
crash.
+    retStr = Replace("a", "abc", "ab")
+    TestLog_ASSERT retStr, "a", "different length of search and replace 
string: " & retStr
+
     result = result & Chr$(10) & "Tests passed: " & passCount & Chr$(10) & 
"Tests failed: " & failCount & Chr$(10)
     verify_stringReplace = result
 End Function
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index 671cbe0a316d..d8fd7299d9eb 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -1285,7 +1285,7 @@ void SbRtl_Replace(StarBASIC *, SbxArray & rPar, bool)
         const css::lang::Locale& rLocale = 
Application::GetSettings().GetUILanguageTag().getLocale();
         css::uno::Reference < i18n::XCharacterClassification > xCharClass = 
vcl::unohelper::CreateCharacterClassification();
         aSrcStr = xCharClass->toUpper(aSrcStr, 0, aSrcStr.getLength(), 
rLocale);
-        aFindStr = xCharClass->toUpper(aFindStr, 0, aSrcStr.getLength(), 
rLocale);
+        aFindStr = xCharClass->toUpper(aFindStr, 0, aFindStr.getLength(), 
rLocale);
     }
 
     // Note: the result starts from lStartPos, removing everything to the 
left. See i#94895.
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to