[PATCH] D16041: Change vfs::FileSystem to be managed with std::shared_ptr
Owen Anderson via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 11 11:08:19 PST 2016
> On Jan 11, 2016, at 8:25 AM, David Blaikie <dblaikie at gmail.com> wrote:
>
>
>
> On Sun, Jan 10, 2016 at 11:42 PM, Owen Anderson via cfe-commits <cfe-commits at lists.llvm.org> wrote:
> resistor created this revision.
> resistor added reviewers: chandlerc, bkramer, klimek.
> resistor added a subscriber: cfe-commits.
> resistor set the repository for this revision to rL LLVM.
> Herald added a subscriber: klimek.
>
> Managing it with IntrusiveRefCntPtr caused the virtual destructor not to be called properly.
>
> Regardless of the broader discussion on this patch, I'm confused by why this ^ would be the case. What is it that IntrusiveRefCntPtr is doing that's causing problems with destruction? (& I'm all for changing this to non-intrusive smart pointers over intrusive ones anyway, but I'd still like to understand the extra motivation here)
>
ThreadSafeRefCountedBase, which classes must inherit from in order to use IntrusiveRefCntPtr, does not handle virtual destructors properly. For the non-thread safe version, there is RefCountBaseVPTR which solves this problem. An alternative solution would have been to add a corresponding ThreadSafeRefCountedBaseVPTR, but IMO at that point one might as well use shared_ptr since it’s 90% of the way there.
—Owen
More information about the cfe-commits
mailing list