Przeglądaj źródła

prevent infinite loop

Armin Schrenk 2 lat temu
rodzic
commit
385574a618

+ 4 - 0
src/main/java/org/cryptomator/common/mount/MountPointPreparationException.java

@@ -2,6 +2,10 @@ package org.cryptomator.common.mount;
 
 public class MountPointPreparationException extends RuntimeException {
 
+	public MountPointPreparationException(String msg) {
+		super(msg);
+	}
+
 	public MountPointPreparationException(Throwable cause) {
 		super(cause);
 	}

+ 5 - 0
src/main/java/org/cryptomator/common/mount/MountWithinParentUtil.java

@@ -51,8 +51,13 @@ public final class MountWithinParentUtil {
 				if (SystemUtils.IS_OS_WINDOWS) {
 					Files.setAttribute(hideaway, WIN_HIDDEN_ATTR, true, LinkOption.NOFOLLOW_LINKS);
 				}
+				int attempts = 0;
 				while (!Files.notExists(mountPoint)) {
+					if (attempts >= 10) {
+						throw new MountPointPreparationException("Path " + mountPoint + " could not be cleared");
+					}
 					Thread.sleep(1000);
+					attempts++;
 				}
 			} catch (IOException e) {
 				throw new MountPointPreparationException(e);