njames93 added inline comments.

================
Comment at: clang/lib/ASTMatchers/ASTMatchersInternal.cpp:190-196
+// Use a custom deleter for the TrueMatcherInstance ManagedStatic. This 
prevents
+// an assert firing when the refcount is nonzero while running its destructor.
+struct DynMatcherInterfaceDeleter {
+  static void call(void *Ptr) {
+    static_cast<DynMatcherInterface *>(Ptr)->Release();
+  }
+};
----------------
dblaikie wrote:
> I think probably the right solution is to have TrueMatcherImpl's dtor Release 
> the same way its ctor Retains. Symmetry is nice/helps avoid splitting this 
> quirk into two different places.
That method is a nasty can of worms. If TrueMatcherImpl dtor calls `Release`, 
that `Release` call would realise the RefCount is now zero. That in turn would 
then call delete on `TrueMatcherImpl` resulting in a double-free.
I think symmetry is possibly the right way to go though, just in using a custom 
creator that calls Retain itself, remove that responsibility from 
TrueMatcherImpl. 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D92480/new/

https://reviews.llvm.org/D92480

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to