Re: compiling gtkmm with atkmm support fails in implementor.cc



On 17/11/2015 11:31, John Emmas wrote:

    template <class T_CppObject> inline
    RefPtr<T_CppObject>::~RefPtr()
    {
      if(pCppObject_)
        pCppObject_->unreference(); // This could cause pCppObject to be deleted.
        //  ^ ^ ^  CRASH HAPPENS HERE
    }

and the above seems to get called during this 'destroy_()' call in 'gtkmm/gtk/gtkmm/window.cc':-

    Window::~Window()
    {
      destroy_();
    }

My guess would be that there is indeed some kind of double deletion happening.  I'll spend another hour or so on it and see if I can get any further...


I didn't really get much further - except to realise that the crash doesn't happen in that 'destroy_()' call - it actually happens after the call (when 'Window' goes out of scope).  So my gut feeling is that this probably isn't a double deletion.  Maybe 'pCppObject_->unreference()' is getting called for an object that's already gone out of scope?  Is that even possible..?

John


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]