summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorEike Rathke <ooo@erack.de>2011-08-10 21:40:56 -0400
committerKohei Yoshida <kyoshida@novell.com>2011-08-10 23:14:55 -0400
commit2b3a4d52ad63a8b388763c7c01a095e0b33db930 (patch)
tree47b958294135bf3c678cea77edfd9aa76ee21a5d /sc
parentc7a66783de22b5a5c8b576d448038365c51b1fba (diff)
Prevent crash at column row boundaries.
Modified from the original patch submitted by Olivier Hallot. Signed-off-by: Kohei Yoshida <kohei.yoshida@suse.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/view/tabview2.cxx46
1 files changed, 16 insertions, 30 deletions
diff --git a/sc/source/ui/view/tabview2.cxx b/sc/source/ui/view/tabview2.cxx
index 0ad18a4c54a1..622a6e112ee7 100644
--- a/sc/source/ui/view/tabview2.cxx
+++ b/sc/source/ui/view/tabview2.cxx
@@ -86,53 +86,39 @@ void moveCursorByProtRule(
if (nMovX > 0)
{
- if (rCol < MAXCOL)
+ for (SCCOL i = 0; i < nMovX && rCol < MAXCOL; ++i)
{
- for (SCCOL i = 0; i < nMovX; ++i)
- {
- if (!isCellQualified(pDoc, rCol+1, rRow, nTab, bSelectLocked, bSelectUnlocked))
- break;
- ++rCol;
- }
+ if (!isCellQualified(pDoc, rCol+1, rRow, nTab, bSelectLocked, bSelectUnlocked))
+ break;
+ ++rCol;
}
}
else if (nMovX < 0)
{
- if (rCol > 0)
+ for (SCCOL i = 0; i > nMovX && rCol > 0; --i)
{
- nMovX = -nMovX;
- for (SCCOL i = 0; i < nMovX; ++i)
- {
- if (!isCellQualified(pDoc, rCol-1, rRow, nTab, bSelectLocked, bSelectUnlocked))
- break;
- --rCol;
- }
+ if (!isCellQualified(pDoc, rCol-1, rRow, nTab, bSelectLocked, bSelectUnlocked))
+ break;
+ --rCol;
}
}
if (nMovY > 0)
{
- if (rRow < MAXROW)
+ for (SCROW i = 0; i < nMovY && rRow < MAXROW; ++i)
{
- for (SCROW i = 0; i < nMovY; ++i)
- {
- if (!isCellQualified(pDoc, rCol, rRow+1, nTab, bSelectLocked, bSelectUnlocked))
- break;
- ++rRow;
- }
+ if (!isCellQualified(pDoc, rCol, rRow+1, nTab, bSelectLocked, bSelectUnlocked))
+ break;
+ ++rRow;
}
}
else if (nMovY < 0)
{
- if (rRow > 0)
+ for (SCROW i = 0; i > nMovY && rRow > 0; --i)
{
- nMovY = -nMovY;
- for (SCROW i = 0; i < nMovY; ++i)
- {
- if (!isCellQualified(pDoc, rCol, rRow-1, nTab, bSelectLocked, bSelectUnlocked))
- break;
- --rRow;
- }
+ if (!isCellQualified(pDoc, rCol, rRow-1, nTab, bSelectLocked, bSelectUnlocked))
+ break;
+ --rRow;
}
}
}