diff --git a/src/db/update/InotifyUpdate.cxx b/src/db/update/InotifyUpdate.cxx index c513d8fab..eb0c2d305 100644 --- a/src/db/update/InotifyUpdate.cxx +++ b/src/db/update/InotifyUpdate.cxx @@ -55,9 +55,15 @@ struct WatchDirectory { std::forward_list children; template - WatchDirectory(WatchDirectory *_parent, N &&_name, + WatchDirectory(N &&_name, int _descriptor) - :parent(_parent), name(std::forward(_name)), + :parent(nullptr), name(std::forward(_name)), + descriptor(_descriptor) {} + + template + WatchDirectory(WatchDirectory &_parent, N &&_name, + int _descriptor) + :parent(&_parent), name(std::forward(_name)), descriptor(_descriptor) {} WatchDirectory(const WatchDirectory &) = delete; @@ -203,7 +209,7 @@ try { /* already being watched */ continue; - parent.children.emplace_front(&parent, + parent.children.emplace_front(parent, name_fs, ret); child = &parent.children.front(); @@ -310,7 +316,7 @@ mpd_inotify_init(EventLoop &loop, Storage &storage, UpdateService &update, return; } - inotify_root = new WatchDirectory(nullptr, path, descriptor); + inotify_root = new WatchDirectory(path, descriptor); tree_add_watch_directory(inotify_root);