Improve error handling upon watch directory setup (#4355)

Failing to handle the exception may lead to a critical log message
(minor) and a crash during startup (major).
This commit is contained in:
Mike Gelfand 2022-12-12 09:12:30 -08:00 committed by GitHub
parent ec1e679395
commit 3354634605
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 7 deletions

View File

@ -740,15 +740,27 @@ void Session::Impl::watchdir_update()
monitor_.reset();
}
if (is_enabled && monitor_ == nullptr)
if (!is_enabled || monitor_ != nullptr)
{
auto const m = dir->monitor_directory();
watchdir_scan();
monitor_ = m;
monitor_dir_ = dir;
monitor_tag_ = m->signal_changed().connect(sigc::mem_fun(*this, &Impl::on_file_changed_in_watchdir));
return;
}
auto monitor = Glib::RefPtr<Gio::FileMonitor>();
try
{
monitor = dir->monitor_directory();
}
catch (Glib::Error const&)
{
return;
}
watchdir_scan();
monitor_ = monitor;
monitor_dir_ = dir;
monitor_tag_ = monitor_->signal_changed().connect(sigc::mem_fun(*this, &Impl::on_file_changed_in_watchdir));
}
/***