From 0e5568351c4bdef93e1f1dbfc4e36a68a8d6d87d Mon Sep 17 00:00:00 2001 From: eidheim Date: Thu, 24 Dec 2015 15:51:47 +0100 Subject: [PATCH] Now correctly removes opened subdirectories when closing a directory. This fixes a crash when changes happened in a subdirectory that had one of its parent/grandparent/etc closed --- src/directories.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/directories.cc b/src/directories.cc index 4209ec7..ab027a9 100644 --- a/src/directories.cc +++ b/src/directories.cc @@ -57,7 +57,13 @@ Directories::Directories() : Gtk::TreeView(), stop_update_thread(false) { }); signal_row_collapsed().connect([this](const Gtk::TreeModel::iterator& iter, const Gtk::TreeModel::Path& path){ update_mutex.lock(); - last_write_times.erase(iter->get_value(column_record.path).string()); + auto directory_str=iter->get_value(column_record.path).string(); + for(auto it=last_write_times.begin();it!=last_write_times.end();) { + if(directory_str==it->first.substr(0, directory_str.size())) + it=last_write_times.erase(it); + else + it++; + } update_mutex.unlock(); auto children=iter->children(); if(children) {