]> git.sur5r.net Git - i3/i3/commitdiff
Disallow moving a container to itself since this would crash i3.
authorIngo Bürk <ingo.buerk@tngtech.com>
Wed, 15 Apr 2015 17:59:53 +0000 (19:59 +0200)
committerIngo Bürk <ingo.buerk@tngtech.com>
Sun, 19 Apr 2015 18:57:49 +0000 (20:57 +0200)
src/con.c
testcases/t/243-move-to-mark.t

index a53045534d14f7ec16c74dbdd48f07402e5e01c0..b82d056ad574434bece704d8f21ef1ee3e6afc86 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -914,6 +914,11 @@ bool con_move_to_mark(Con *con, const char *mark) {
         target = TAILQ_FIRST(&(target->focus_head));
     }
 
+    if (con == target) {
+        DLOG("cannot move the container to itself, aborting.\n");
+        return false;
+    }
+
     return _con_move_to_con(con, target, false, true, false);
 }
 
index f3451675d51228b31f6d09b7dd12545b1efd9945..86d718643aaeb70ef6ef28708905156e34da0e50 100644 (file)
@@ -268,6 +268,21 @@ sync_with_i3;
 ($nodes, $focus) = get_ws_content($target_ws);
 is(@{$nodes}, 1, 'tiling container moved to the target workspace');
 
+###############################################################################
+# Given 'S' and 'M' are the same container, when 'S' is moved to 'M', then
+# the command is ignored.
+###############################################################################
+
+$ws = fresh_workspace;
+$S = open_window;
+$M = $S;
+cmd 'mark target';
+
+cmd '[id="' . $S->{id} . '"] move container to mark target';
+sync_with_i3;
+
+does_i3_live;
+
 ###############################################################################
 
 done_testing;