sc/source/core/tool/compiler.cxx | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-)
New commits: commit c9519a210523c732188a494c14ac212db43463e5 Author: Eike Rathke <er...@redhat.com> Date: Fri Apr 17 12:00:18 2015 +0200 TableRef: handle unresolved column specifiers Change-Id: I8b4fa10da0a39df941f92b8bb074b9031f81fb8e diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index 055bcd2..63f2dd5 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -3710,6 +3710,9 @@ bool ScCompiler::NextNewToken( bool bInArray ) { if (IsTableRefColumn( aOrg )) return true; + // Do not attempt to resolve as any other name. + aUpper = aOrg; // for ocBad + break; // do; create ocBad token or set error. } mbRewind = false; @@ -4859,8 +4862,7 @@ bool ScCompiler::HandleTableRef() pDBData->GetArea(aDBRange); aDBRange.aEnd.SetTab(aDBRange.aStart.Tab()); ScRange aRange( aDBRange); - ScTokenArray* pNew = new ScTokenArray(); - bool bAddRange = true; + sal_uInt16 nError = 0; bool bForwardToClose = false; ScTableRefToken::Item eItem = pTR->GetItem(); switch (eItem) @@ -4874,7 +4876,7 @@ bool ScCompiler::HandleTableRef() if (pDBData->HasTotals()) aRange.aEnd.IncRow(-1); if (aRange.aEnd.Row() < aRange.aStart.Row()) - bAddRange = false; + nError = errNoRef; bForwardToClose = true; } break; @@ -4888,7 +4890,7 @@ bool ScCompiler::HandleTableRef() if (pDBData->HasHeader()) aRange.aEnd.SetRow( aRange.aStart.Row()); else - bAddRange = false; + nError = errNoRef; bForwardToClose = true; } break; @@ -4903,7 +4905,7 @@ bool ScCompiler::HandleTableRef() if (pDBData->HasTotals()) aRange.aEnd.IncRow(-1); if (aRange.aEnd.Row() < aRange.aStart.Row()) - bAddRange = false; + nError = errNoRef; bForwardToClose = true; } break; @@ -4912,7 +4914,7 @@ bool ScCompiler::HandleTableRef() if (pDBData->HasTotals()) aRange.aStart.SetRow( aRange.aEnd.Row()); else - bAddRange = false; + nError = errNoRef; bForwardToClose = true; } break; @@ -4921,7 +4923,7 @@ bool ScCompiler::HandleTableRef() if (pDBData->HasHeader()) aRange.aStart.IncRow(); if (aRange.aEnd.Row() < aRange.aStart.Row()) - bAddRange = false; + nError = errNoRef; bForwardToClose = true; } break; @@ -4933,7 +4935,7 @@ bool ScCompiler::HandleTableRef() aRange.aEnd.SetRow( aPos.Row()); } else - bAddRange = false; + nError = errNoRef; bForwardToClose = true; } break; @@ -4995,6 +4997,11 @@ bool ScCompiler::HandleTableRef() eState = sStop; } break; + case ocBad: + eState = sLast; + if (!nError) + nError = errNoName; + break; default: eState = sStop; } @@ -5005,7 +5012,8 @@ bool ScCompiler::HandleTableRef() } } while (eState != sStop); } - if (bAddRange) + ScTokenArray* pNew = new ScTokenArray(); + if (!nError) { if (bColumnRange) { @@ -5083,7 +5091,7 @@ bool ScCompiler::HandleTableRef() } else { - pTR->SetAreaRefRPN( pNew->Add( new FormulaErrorToken( errNoRef))); + pTR->SetAreaRefRPN( pNew->Add( new FormulaErrorToken( nError))); } while (nLevel-- > 0) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits