Browse Source

fix bug in fixdeletetree.zig

Jonathan Marler 3 years ago
parent
commit
42f68cb9b4
1 changed files with 8 additions and 7 deletions
  1. 8 7
      fixdeletetree.zig

+ 8 - 7
fixdeletetree.zig

@@ -13,17 +13,18 @@ pub fn deleteTree(dir: std.fs.Dir, sub_path: []const u8) !void {
     const MAX_ATTEMPTS = 10;
     var attempt: u8 = 0;
     while (true) : (attempt += 1) {
-        return dir.deleteTree(sub_path) catch |e| {
-            if (attempt == MAX_ATTEMPTS) return e;
-            switch (e) {
+        if (dir.deleteTree(sub_path)) {
+            return;
+        } else |err| {
+            if (attempt == MAX_ATTEMPTS) return err;
+            switch (err) {
                 error.FileBusy => {
-                    if (attempt == MAX_ATTEMPTS) return e;
-                    std.log.warn("path '{s}' is busy, will retry", .{sub_path});
+                    std.log.warn("path '{s}' is busy (attempt {}), will retry", .{sub_path, attempt});
                     std.time.sleep(std.time.ns_per_ms * 100); // sleep for 100 ms
                 },
-                else => return e,
+                else => |e| return e,
             }
-        };
+        }
     }
 }
 pub fn deleteTreeAbsolute(dir_absolute: []const u8) !void {