tdf#134940 sw: fix AutoCorrect of arrow "-->"

Fix bad replacement of "-->" with "–>" instead of "→"
(i.e. premature replacement of "--" to n-dash)
since '>' was added to IsAutoCorrectChar().

Regression from commit 57f07b1d7378d218648667c5b1315cc8ad905875
"tdf#133524 AutoCorrect: support double angle quotes".

Change-Id: I06f0cddb48d13c8e230dab964f79f588799ed4ab
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111527
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
(cherry picked from commit d1be3d80d0ca5ccd7639ede379a1befc48dc73f2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111580
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index 57f8611..f58cb3e 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -1517,7 +1517,10 @@ void SvxAutoCorrect::DoAutoCorrect( SvxAutoCorrDoc& rDoc, const OUString& rTxt,
        if( lcl_IsSymbolChar( rCC, rTxt, nCapLttrPos, nInsPos ))
            break;

        if( IsAutoCorrFlag( ACFlags::Autocorrect ) )
        if( IsAutoCorrFlag( ACFlags::Autocorrect ) &&
            // tdf#134940 fix regression of arrow "-->" resulted by premature
            // replacement of "--" since '>' was added to IsAutoCorrectChar()
            '>' != cChar )
        {
            // WARNING ATTENTION: rTxt is an alias of the text node's OUString
            // and becomes INVALID if ChgAutoCorrWord returns true!
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 3278811..54d90afe 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -7612,6 +7612,16 @@ void SwUiWriterTest::testTdf133524()
    pWrtShell->AutoCorrect(corr, '"');
    sReplaced += u".”";
    CPPUNIT_ASSERT_EQUAL(sReplaced, static_cast<SwTextNode*>(pDoc->GetNodes()[nIndex])->GetText());
    // tdf#134940 avoid premature replacement of "--" in "-->"
    pWrtShell->Insert(u" --");
    pWrtShell->AutoCorrect(corr, '>');
    OUString sReplaced2(sReplaced + u" -->");
    // This was "–>" instead of "-->"
    CPPUNIT_ASSERT_EQUAL(sReplaced2, static_cast<SwTextNode*>(pDoc->GetNodes()[nIndex])->GetText());
    pWrtShell->AutoCorrect(corr, ' ');
    sReplaced += u" → ";
    // This was "–>" instead of "→"
    CPPUNIT_ASSERT_EQUAL(sReplaced, static_cast<SwTextNode*>(pDoc->GetNodes()[nIndex])->GetText());
}

void SwUiWriterTest::testTdf133524_Romanian()