Sun, 06 Apr 2014 01:26:04 +0300
- use index-based iterating in LDDocument::closeUnused because deleting documents while iterating over g_loadedFiles causes the iterator to become invalidated
src/ldDocument.cc | file | annotate | diff | comparison | revisions |
--- a/src/ldDocument.cc Sat Mar 29 05:26:10 2014 +0200 +++ b/src/ldDocument.cc Sun Apr 06 01:26:04 2014 +0300 @@ -1151,9 +1151,13 @@ // void LDDocument::closeUnused() { - for (LDDocument* file : g_loadedFiles) + for (int i = 0; i < g_loadedFiles.size(); ++i) + { + LDDocument* file = g_loadedFiles[i]; + if (file->isImplicit() && file->references().isEmpty()) - delete file; + delete g_loadedFiles[i--]; + } } // =============================================================================