[PATCH] D29886: [clangd] Wire up ASTUnit and publish diagnostics with it.

Wojciech Cierpucha via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 15 05:55:11 PST 2017


cierpuchaw added inline comments.


================
Comment at: clangd/DocumentStore.h:42
   /// Delete a document from the store.
-  void removeDocument(StringRef Uri) { Docs.erase(Uri); }
+  void removeDocument(StringRef Uri) { Docs.erase(Uri);
+    for (const auto &Listener : Listeners)
----------------
bkramer wrote:
> klimek wrote:
> > krasimir wrote:
> > > cierpuchaw wrote:
> > > > cierpuchaw wrote:
> > > > > Shouldn't this be called under a lock_guard?
> > > > I should've reworded my comment before submitting it. By 'this' I'm referring to the 'Docs.erase()' part, not the whole function.
> > > > 
> > > Even under a guard, it may potentially still be unsafe since workers may operate on erased/modified StringRef-s.
> > That depends on the guarantees made, and when we create copies :)
> Added guard.
'Docs.erase(Uri);' is still outside the critical section. It's easy to miss because of its placement directly after '{'.


https://reviews.llvm.org/D29886





More information about the cfe-commits mailing list