From d1de6e3d560407051faddb0497f36f644becd527 Mon Sep 17 00:00:00 2001 From: Michael Stahl Date: Thu, 1 Sep 2016 23:06:00 +0200 Subject: editeng: don't let wild-card auto-correct leave current word MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If a paragraph has e.g. multiple -> in it then auto-correct of the first one will create via the .*->.* rule a new auto-correct entry that has as long-word the word that contains the first -> until the last -> and everything in between. This will be somewhat irritating when it is eventually applied. Avoid it by limiting the wild-card loop to the current word, which is apparently the intent anyway. (regression from a07425892205ff8951027ea20459b97370d01de6) Change-Id: I294bae863c44eb460627b61b4383133131fe4b3a Reviewed-on: https://gerrit.libreoffice.org/28608 Reviewed-by: László Németh Tested-by: Jenkins Reviewed-by: Michael Stahl (cherry picked from commit 9670f0d17ffed1ff07cb1deddcabc26c756e4bc1) Reviewed-on: https://gerrit.libreoffice.org/28633 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- editeng/source/misc/svxacorr.cxx | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'editeng') diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx index 0bfd925c8a99..1fe52caf7ca8 100644 --- a/editeng/source/misc/svxacorr.cxx +++ b/editeng/source/misc/svxacorr.cxx @@ -2823,6 +2823,11 @@ const SvxAutocorrWord* SvxAutocorrWordList::WordMatches(const SvxAutocorrWord *p nSttWdPos = rTxt.indexOf( sTmp, nFndPos); if (nSttWdPos != -1) { + sal_Int32 nTmp(nFndPos); + while (nTmp < nSttWdPos && !IsWordDelim(rTxt[nTmp])) + nTmp++; + if (nTmp < nSttWdPos) + break; // word delimiter found buf.append(rTxt.copy(nFndPos, nSttWdPos - nFndPos)).append(pFnd->GetLong()); nFndPos = nSttWdPos + sTmp.getLength(); } -- cgit v1.2.3