Web pgadmin.org
 Home 
 ·  ·  ·  ·  ·  ·  · 
Re: pgadmin3-1.6.1 - core dumped - Work around

Re: pgadmin3-1.6.1 - core dumped - Work around



Zdenek Kotala wrote:
I'm still not sure how you're getting into that code when you close the form though...

The root cause is destructor of frmQuery dialog. It removes all connection from combo box exclude last item - "new connection". Each deletion invoke frmQuery::OnChangeConnection event and the OnChangeConnection method invokes "new connection dialog" in the last step. And because there are some empty combo boxes on this dialog, gtk generates core.

Ah, of course - well spotted.

My suggestion is disable event generation for cbConnection in the destructor.

Agreed. Can one or both of you test the attached patch please?

Thanks, Dave.
Index: frmQuery.cpp
===================================================================
--- frmQuery.cpp	(revision 5791)
+++ frmQuery.cpp	(working copy)
@@ -62,7 +62,6 @@
 BEGIN_EVENT_TABLE(frmQuery, pgFrame)
     EVT_ERASE_BACKGROUND(           frmQuery::OnEraseBackground)
     EVT_SIZE(                       frmQuery::OnSize)
-    EVT_COMBOBOX(CTRLID_CONNECTION, frmQuery::OnChangeConnection)
     EVT_CLOSE(                      frmQuery::OnClose)
     EVT_SET_FOCUS(                  frmQuery::OnSetFocus)
     EVT_MENU(MNU_NEW,               frmQuery::OnNew)
@@ -280,6 +279,7 @@
     outputPane->AddPage(msgResult, _("Messages"));
     outputPane->AddPage(msgHistory, _("History"));
 
+    this->Connect(CTRLID_CONNECTION, wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(frmQuery::OnChangeConnection));
     sqlQuery->Connect(wxID_ANY, wxEVT_SET_FOCUS,wxFocusEventHandler(frmQuery::OnFocus));
     sqlResult->Connect(wxID_ANY, wxEVT_SET_FOCUS, wxFocusEventHandler(frmQuery::OnFocus));
     msgResult->Connect(wxID_ANY, wxEVT_SET_FOCUS, wxFocusEventHandler(frmQuery::OnFocus));
@@ -369,6 +369,7 @@
     sqlResult->Disconnect(wxID_ANY, wxEVT_SET_FOCUS, wxFocusEventHandler(frmQuery::OnFocus));
     msgResult->Disconnect(wxID_ANY, wxEVT_SET_FOCUS, wxFocusEventHandler(frmQuery::OnFocus));
     msgHistory->Disconnect(wxID_ANY, wxEVT_SET_FOCUS, wxFocusEventHandler(frmQuery::OnFocus));
+    this->Disconnect(CTRLID_CONNECTION, wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(frmQuery::OnChangeConnection));
 
     if (mainForm)
         mainForm->RemoveFrame(this);
@@ -632,10 +633,6 @@
 
 void frmQuery::OnChangeConnection(wxCommandEvent &ev)
 {
-    // On Solaris, this event seems to get fired when the form closes(!!)
-    if(!IsVisible())
-        return; 
-
     unsigned int sel=cbConnection->GetCurrentSelection();
     if (sel == cbConnection->GetCount()-1)
     {


Home | Main Index | Thread Index

top