{
     static int8_t wrap_west_east   = 0;
     static int8_t wrap_north_south = 0;
-    char * err = "Too much wrapping in mv_yx_in_dir_wrap().";
-    exit_err(   INT8_MIN == wrap_west_east || INT8_MIN == wrap_north_south
-             || INT8_MAX == wrap_west_east || INT8_MAX == wrap_north_south, err);
     if (!yx)
     {
         wrap_west_east = wrap_north_south = 0;
         return 0;
     }
+    char * err = "Too much wrapping in mv_yx_in_dir_legal().";
+    exit_err(   INT8_MIN == wrap_west_east || INT8_MIN == wrap_north_south
+             || INT8_MAX == wrap_west_east || INT8_MAX == wrap_north_south, err);
     struct yx_uint8 original;
     original.y = yx->y;
     original.x = yx->x;