diff options
author | Eike Rathke <erack@redhat.com> | 2022-09-22 18:32:13 +0200 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2022-09-23 12:23:13 +0200 |
commit | 6801744b29c0b4949af760fe9ba3eb86d997d33c (patch) | |
tree | 3f1c9cb47a9132933177f8fc76b84c76b6ba008a /sc | |
parent | d194474aabd699806cb3631bc8641dd0548b8026 (diff) |
Fix string length assertion and handle parentheses in multi-line formula
soffice.bin: include/rtl/ustring.hxx:842: sal_Unicode rtl::OUString::operator[](sal_Int32) const: Assert ion `index >= 0 && static_cast<sal_uInt32>(index) < static_cast<sal_uInt32>(getLength())' failed.
when editing a paragraph (line) longer than the first, because the
string was always obtained from the first paragraph but the
position from the current selection.
Also match parentheses in the current paragraph, not somewhere
else in the first paragraph.. still we're matching only within one
paragraph.
Change-Id: I955fd371c1e248ce58735a5b61603bbce6c997db
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140446
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit 10d1e6ff6b3a10b673696524ad59297f4e5a1c2c)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140388
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/app/inputhdl.cxx | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx index 088d3ecfc297..1d6f9bcba9d3 100644 --- a/sc/source/ui/app/inputhdl.cxx +++ b/sc/source/ui/app/inputhdl.cxx @@ -2171,10 +2171,11 @@ void ScInputHandler::UpdateParenthesis() { // Examine character left to the cursor sal_Int32 nPos = aSel.nStartPos - 1; - OUString aFormula = mpEditEngine->GetText(0); + OUString aFormula = mpEditEngine->GetText(aSel.nStartPara); sal_Unicode c = aFormula[nPos]; if ( c == '(' || c == ')' ) { + // Note this matches only within one paragraph. sal_Int32 nOther = lcl_MatchParenthesis( aFormula, nPos ); if ( nOther != -1 ) { @@ -2190,9 +2191,9 @@ void ScInputHandler::UpdateParenthesis() mpEditEngine->RemoveCharAttribs( i, EE_CHAR_WEIGHT ); } - ESelection aSelThis( 0,nPos, 0,nPos+1 ); + ESelection aSelThis( aSel.nStartPara, nPos, aSel.nStartPara, nPos+1); mpEditEngine->QuickSetAttribs( aSet, aSelThis ); - ESelection aSelOther( 0,nOther, 0,nOther+1 ); + ESelection aSelOther( aSel.nStartPara, nOther, aSel.nStartPara, nOther+1); mpEditEngine->QuickSetAttribs( aSet, aSelOther ); // Dummy InsertText for Update and Paint (selection is empty) |