OSDN Git Service

CMFM: Fix move infinite loop
authorJorge Ruesga <jorge@ruesga.com>
Fri, 29 Nov 2013 23:20:24 +0000 (00:20 +0100)
committerJorge Ruesga <jorge@ruesga.com>
Fri, 29 Nov 2013 23:20:24 +0000 (00:20 +0100)
Change-Id: I5a4f3ae0844506a08819d355b840637b5374f0f2
JIRA: CYAN-2791
Issue: https://jira.cyanogenmod.org/browse/CYAN-2791
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>
src/com/cyanogenmod/filemanager/ui/policy/CopyMoveActionPolicy.java

index c2923f3..33e0b98 100644 (file)
@@ -349,7 +349,6 @@ public final class CopyMoveActionPolicy extends ActionsPolicy {
              * @param dst The destination file
              * @param operation Indicates the operation to do
              */
-            @SuppressWarnings("hiding")
             private void doOperation(
                     Context ctx, File src, File dst, COPY_MOVE_OPERATION operation)
                     throws Throwable {
@@ -357,18 +356,23 @@ public final class CopyMoveActionPolicy extends ActionsPolicy {
                 if (src.compareTo(dst) == 0) return;
 
                 try {
+                    // Be sure to append a / if source is a folder (otherwise system crashes
+                    // under using absolute paths) Issue: CYAN-2791
+                    String source = src.getAbsolutePath() +
+                            (src.isDirectory() ? File.separator : "");
+
                     // Copy or move?
                     if (operation.compareTo(COPY_MOVE_OPERATION.MOVE) == 0 ||
                             operation.compareTo(COPY_MOVE_OPERATION.RENAME) == 0) {
                         CommandHelper.move(
                                 ctx,
-                                src.getAbsolutePath(),
+                                source,
                                 dst.getAbsolutePath(),
                                 null);
                     } else {
                         CommandHelper.copy(
                                 ctx,
-                                src.getAbsolutePath(),
+                                source,
                                 dst.getAbsolutePath(),
                                 null);
                     }