Ticket #1714: enable_shared_from_this.patch

File enable_shared_from_this.patch, 963 bytes (added by Dave Abrahams, 15 years ago)

This appears to fix the bug but I have no idea if the logic is right.

  • enable_shared_from_this.hpp

     
    9393    template<typename U>
    9494    void _internal_accept_owner(shared_ptr<U> &owner) const
    9595    {
    96         init_internal_shared_once();
    97         get_deleter<detail::sp_deleter_wrapper>(_internal_shared_this)->set_deleter(owner);
    98         owner.reset( _internal_shared_this, owner.get() );
    99         _internal_shared_this.reset();
    100         _owned = true;
     96        if (_owned == false)
     97        {
     98            init_internal_shared_once();
     99            get_deleter<detail::sp_deleter_wrapper>(_internal_shared_this)->set_deleter(owner);
     100            owner.reset( _internal_shared_this, owner.get() );
     101            _internal_shared_this.reset();
     102            _owned = true;
     103        }
    101104    }
    102105};
    103106