diff options
author | Andrés <andmarti@gmail.com> | 2021-06-11 13:47:47 -0300 |
---|---|---|
committer | Andrés <andmarti@gmail.com> | 2021-06-11 13:47:47 -0300 |
commit | e71c2b2bf3120ba12badd73dcb47124b36e7f3d4 (patch) | |
tree | 41f744a97f914929e4a1ff8577675846ae1dace6 /src | |
parent | 690053f15860b9d1a85498cc0fd0bc3bed91efc4 (diff) |
Avoid reading passed maxcols maxrows when shifting left or up over last sheet column/row
Diffstat (limited to 'src')
-rw-r--r-- | src/actions/shift.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/actions/shift.c b/src/actions/shift.c index b878a56..cb4fc05 100644 --- a/src/actions/shift.c +++ b/src/actions/shift.c @@ -74,7 +74,13 @@ extern struct session * session; void shift(struct sheet * sh, int r, int c, int rf, int cf, wchar_t type) { struct roman * roman = session->cur_doc; - if (any_locked_cells(sh, r, c, rf, cf) && (type == L'h' || type == L'k') ) { + if (cf - 1 + cmd_multiplier >= sh->maxcols && type == L'h') { + sc_error("current column + multiplier exceeds max column. Nothing changed"); + return; + } else if (rf - 1 + cmd_multiplier >= sh->maxrows && type == L'k') { + sc_error("current row + multiplier exceeds max row. Nothing changed"); + return; + } else if (any_locked_cells(sh, r, c, rf, cf) && (type == L'h' || type == L'k') ) { sc_error("Locked cells encountered. Nothing changed"); return; } |