diff options
author | Eike Rathke <ooo@erack.de> | 2011-08-10 21:40:56 -0400 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2011-08-10 23:14:55 -0400 |
commit | 2b3a4d52ad63a8b388763c7c01a095e0b33db930 (patch) | |
tree | 47b958294135bf3c678cea77edfd9aa76ee21a5d /sc | |
parent | c7a66783de22b5a5c8b576d448038365c51b1fba (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.cxx | 46 |
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; } } } |