Project

General

Profile

Exception on freeing WPopupMenu after browser refresh.

Added by dima s over 12 years ago

Hi,

I get an access violation exception in git version of wt when freeing WPopupMenu after refreshing browser page. This works fine in wt 3.1.10.

Here is example code of method showing WPopupMenu where exception occurs:

...
TableView::TableView()
: Wt::WTableView()
, m_pMenu( NULL )
{
    this->mouseWentUp().connect( this, &TableView::ShowPopup );
}

TableView::~TableView()
{
    if( m_pMenu )
    {
        delete m_pMenu;
        m_pMenu = NULL;
    }
}
...
void TableView::ShowPopup( const Wt::WMouseEvent& event )
{
    if( event.button() == Wt::WMouseEvent::RightButton )
    {
        if( m_pMenu )
        {
            delete m_pMenu; // <-- EXCEPTION HERE after refreshing browser and triggering show of popup
            m_pMenu = NULL;
        }

        m_pMenu = new Wt::WPopupMenu();
        m_pMenu->addItem( Wt::WString::tr( "Menu item" ) );
        m_pMenu->aboutToHide().connect( this, &TableView::PopupAction );
        m_pMenu->popup( event );
    }
}
...

Regards,

dima