diff --git a/source/vibe/core/file.d b/source/vibe/core/file.d index 430db57..7213c03 100644 --- a/source/vibe/core/file.d +++ b/source/vibe/core/file.d @@ -375,7 +375,7 @@ void listDirectory(string path, scope bool delegate(FileInfo info) @safe del) auto ch = createChannel!S(); TaskSettings ts; ts.priority = 10 * Task.basePriority; - runWorkerTaskH(ioTaskSettings, (string path, Channel!S ch) nothrow { + auto t = runWorkerTaskH(ioTaskSettings, (string path, Channel!S ch) nothrow { scope (exit) ch.close(); try { foreach (DirEntry ent; dirEntries(path, SpanMode.shallow)) { @@ -389,6 +389,11 @@ void listDirectory(string path, scope bool delegate(FileInfo info) @safe del) } }, path, ch); + scope (exit) { + t.interrupt(); + t.joinUninterruptible(); + } + S itm; while (ch.tryConsumeOne(itm)) { if (itm.error.length)