diff --git a/window.cpp b/window.cpp
index f19a03ecb773040dcb7424a2446b24e0b3759493..2b7236eca5a1d2e2bd682a2316600e2d78929b94 100644
--- a/window.cpp
+++ b/window.cpp
@@ -53,10 +53,11 @@ Window::Window(QWidget *parent)
             for (int d = 0; d < 9; d++) // rows and columns
             {
                 connect(&grid[x + y * 9], SIGNAL(update(int)), &grid[x + d * 9], SLOT(removeOption(int)));
-                connect(&grid[x + y * 9], SIGNAL(update(int)), &grid[d + y * 9], SLOT(removeOption(int)));
-
                 connect(&grid[x + y * 9], SIGNAL(undo(int)), &grid[x + d * 9], SLOT(addOption(int)));
-                connect(&grid[x + y * 9], SIGNAL(undo(int)), &grid[d + y * 9], SLOT(addOption(int)));
+                if(&grid[x+y*9]!= &grid[d+y*9]){
+                    connect(&grid[x + y * 9], SIGNAL(update(int)), &grid[d + y * 9], SLOT(removeOption(int)));
+                    connect(&grid[x + y * 9], SIGNAL(undo(int)), &grid[d + y * 9], SLOT(addOption(int)));
+                }
             }
             int a = x / 3 * 3;
             int b = y / 3 * 3;