chiark / gitweb /
cmdlistener: Do not allow resizing the table so pieces fall outside
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Apr 2021 22:29:37 +0000 (23:29 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 28 Apr 2021 22:29:37 +0000 (23:29 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs

index 1e2b8368a95895ec7cf4a94d60f54874663bb24f..55d128fe0ef88c60d4c7b2534331b19cba9ee171 100644 (file)
@@ -377,6 +377,9 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>(
 
     MGI::SetTableSize(size) => {
       let ig = cs.check_acl(ag, ig, PCH::Instance, &[TP::ChangePieces])?.0;
+      for p in ig.gs.pieces.values() {
+        p.pos.clamped(size).map_err(|_| SpecError::PosOffTable)?;
+      }
       ig.gs.table_size = size;
       (U{ pcs: vec![],
           log: vec![ LogEntry {