c50288b
diff --git a/src/file.c b/src/file.c
c50288b
index d7eaa46..5c45dcf 100644
c50288b
--- a/src/file.c
c50288b
+++ b/src/file.c
c50288b
@@ -2066,28 +2066,21 @@ panel_operate (void *source_panel, FileOperation operation, gboolean force_singl
c50288b
             dest_dir = other_panel->cwd;
c50288b
         else
c50288b
             dest_dir = panel->cwd;
c50288b
-
c50288b
         /*
c50288b
          * Add trailing backslash only when do non-local ops.
c50288b
          * It saves user from occasional file renames (when destination
c50288b
          * dir is deleted)
c50288b
          */
c50288b
-        if (force_single || dest_dir[0] == '\0')
c50288b
-        {
c50288b
-            /* just copy */
c50288b
-            dest_dir_ = g_strdup (dest_dir);
c50288b
-        }
c50288b
-        else if (single_entry)
c50288b
+        if (!force_single && dest_dir[0] != '\0' && dest_dir[strlen (dest_dir) - 1] != PATH_SEP)
c50288b
         {
c50288b
-            /* add filename to dest path */
c50288b
-            dest_dir_ = g_build_filename (dest_dir, source, (char *) NULL);
c50288b
+            /* add trailing separator */
c50288b
+            dest_dir_ = g_strconcat (dest_dir, PATH_SEP_STR, (char *) NULL);
c50288b
         }
c50288b
         else
c50288b
         {
c50288b
-            /* add trailing separator */
c50288b
-            dest_dir_ = g_strconcat (dest_dir, PATH_SEP_STR, (char *) NULL);
c50288b
+            /* just copy */
c50288b
+            dest_dir_ = g_strdup (dest_dir);
c50288b
         }
c50288b
-
c50288b
         if (dest_dir_ == NULL)
c50288b
         {
c50288b
             file_op_total_context_destroy (tctx);