From 5f1c168bf55b3d3379c69426ee0f11ad0b1144ae Mon Sep 17 00:00:00 2001 From: Joachim Schiele Date: Wed, 12 Jul 2023 19:55:51 +0000 Subject: [PATCH] Potential fix for https://github.com/radovskyb/watcher/issues/121 --- watcher.go | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/watcher.go b/watcher.go index 4da4dfe..1460234 100644 --- a/watcher.go +++ b/watcher.go @@ -9,6 +9,7 @@ import ( "regexp" "strings" "sync" + "syscall" "time" ) @@ -495,29 +496,35 @@ func (w *Watcher) retrieveFileList() map[string]os.FileInfo { if recursive { list, err = w.listRecursive(name) if err != nil { - if os.IsNotExist(err) { - w.mu.Unlock() - if name == err.(*os.PathError).Path { - w.Error <- ErrWatchedFileDeleted - w.RemoveRecursive(name) + e, ok := err.(syscall.Errno) + if ok && e.Is(err) { + if os.IsNotExist(err) { + w.mu.Unlock() + if name == err.(*os.PathError).Path { + w.Error <- ErrWatchedFileDeleted + w.RemoveRecursive(name) + } + w.mu.Lock() + } else { + w.Error <- err } - w.mu.Lock() - } else { - w.Error <- err } } } else { list, err = w.list(name) if err != nil { - if os.IsNotExist(err) { - w.mu.Unlock() - if name == err.(*os.PathError).Path { - w.Error <- ErrWatchedFileDeleted - w.Remove(name) + e, ok := err.(syscall.Errno) + if ok && e.Is(err) { + if os.IsNotExist(err) { + w.mu.Unlock() + if name == err.(*os.PathError).Path { + w.Error <- ErrWatchedFileDeleted + w.Remove(name) + } + w.mu.Lock() + } else { + w.Error <- err } - w.mu.Lock() - } else { - w.Error <- err } } }