[Libreoffice-commits] core.git: sc/source
Caolán McNamara
caolanm at redhat.com
Thu Oct 24 05:54:03 PDT 2013
sc/source/core/tool/compiler.cxx | 4 ++--
sc/source/ui/app/inputhdl.cxx | 14 +++++++++-----
sc/source/ui/view/viewdata.cxx | 2 +-
3 files changed, 12 insertions(+), 8 deletions(-)
New commits:
commit 082e1fa44cf6b3d61d571bab99407d3f38d8288d
Author: Caolán McNamara <caolanm at redhat.com>
Date: Thu Oct 24 13:51:09 2013 +0100
more string bounds checks for sc
Change-Id: I99293a91018c130415bd3816fa23f44643512a74
diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index 33ba889..5a7d8e2 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -3673,14 +3673,14 @@ ScTokenArray* ScCompiler::CompileString( const OUString& rFormula )
aCorrectedSymbol = "";
}
sal_uInt8 nForced = 0; // ==formula forces recalc even if cell is not visible
- if( aFormula[nSrcPos] == '=' )
+ if( nSrcPos < aFormula.getLength() && aFormula[nSrcPos] == '=' )
{
nSrcPos++;
nForced++;
if ( bAutoCorrect )
aCorrectedFormula += "=";
}
- if( aFormula[nSrcPos] == '=' )
+ if( nSrcPos < aFormula.getLength() && aFormula[nSrcPos] == '=' )
{
nSrcPos++;
nForced++;
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index 87713ec..de88da3 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -2247,11 +2247,15 @@ void ScInputHandler::UpdateFormulaMode()
{
SfxApplication* pSfxApp = SFX_APP();
- if ( pEngine->GetParagraphCount() == 1 &&
- ( pEngine->GetText(0)[0] == '=' ||
- pEngine->GetText(0)[0] == '+' ||
- pEngine->GetText(0)[0] == '-' ) &&
- !bProtected )
+ bool bIsFormula = !bProtected && pEngine->GetParagraphCount() == 1;
+ if (bIsFormula)
+ {
+ const OUString& rText = pEngine->GetText(0);
+ bIsFormula = !rText.isEmpty() &&
+ (rText[0] == '=' || rText[0] == '+' || rText[0] == '-');
+ }
+
+ if ( bIsFormula )
{
if (!bFormulaMode)
{
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 0769315c..1434cd4 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -1328,7 +1328,7 @@ void ScViewData::EditGrowY( sal_Bool bInitial )
// Subsequent calls with empty text might involve changed attributes (including
// font height), so they are treated like normal text.
OUString aText = pEngine->GetText( 0 );
- if ( ( aText.isEmpty() && bInitial ) || aText[0] == '=' )
+ if ( ( aText.isEmpty() && bInitial ) || (!aText.isEmpty() && aText[0] == '=') )
nAllowedExtra = SC_GROWY_BIG_EXTRA;
}
More information about the Libreoffice-commits
mailing list