diff options
author | Eike Rathke <erack@redhat.com> | 2020-05-12 23:49:46 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2020-05-13 16:56:26 +0200 |
commit | 223c577b4da3ae8a0c4b8e09cb38705cf927043c (patch) | |
tree | ec8df92749d9d50a32e364217c9ec6d7dfa439eb /formula | |
parent | 19a046340ff16fe7e569cdbde18d04a888d585fd (diff) |
Check maximum end position to not assert() or "!!br0ken!!"
While editing a formula in the Function Wizard it could happen
that inserting an unclosed quote attempted to copy one more
character than string length for parameter display. For example
=FUNC("A";")
Change-Id: Ic25ee0b97c3baee8d2e964c9e4b907415b0d889e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94086
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit f9790da286f2d2fa47f1748f8cfa6172c6622ca3)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93997
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
Diffstat (limited to 'formula')
-rw-r--r-- | formula/source/ui/dlg/FormulaHelper.cxx | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/formula/source/ui/dlg/FormulaHelper.cxx b/formula/source/ui/dlg/FormulaHelper.cxx index b3c0b4a204bc..09bfe09ed67d 100644 --- a/formula/source/ui/dlg/FormulaHelper.cxx +++ b/formula/source/ui/dlg/FormulaHelper.cxx @@ -346,7 +346,9 @@ sal_Int32 FormulaHelper::GetFunctionEnd( const OUString& rStr, sal_Int32 nStart nStart++; // Set behind found position } - return nStart; + // nStart > nStrLen can happen if there was an unclosed quote; instead of + // checking that in every loop iteration check it once here. + return std::min(nStart, nStrLen); } |