diff options
author | Eike Rathke <ooo@erack.de> | 2011-08-10 21:40:56 -0400 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2011-08-10 21:45:39 -0400 |
commit | ba2069b96f6b00c93daf17b92a8d270186beb8f8 (patch) | |
tree | b4999f2213e822d883cb1e2379b965a9ac4e47e7 | |
parent | 807c3f3a3a350d10c7d51c70ee2653de73c94d1c (diff) |
Prevent crash at column row boundaries.libreoffice-3-3
Modified from the original patch submitted by Olivier Hallot.
Signed-off-by: Kohei Yoshida <kohei.yoshida@suse.com>
-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 a4e75a4ac..3d746e962 100644 --- a/sc/source/ui/view/tabview2.cxx +++ b/sc/source/ui/view/tabview2.cxx @@ -656,53 +656,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; } } } |