X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/68662769ff95f11208319be6fa303bfdd6d8331a..28be2e8a170979d476a5ea4f585505b8a2f5af27:/src/common/event.cpp

diff --git a/src/common/event.cpp b/src/common/event.cpp
index ca7605d9b9..87eda81fdb 100644
--- a/src/common/event.cpp
+++ b/src/common/event.cpp
@@ -82,6 +82,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxIdleEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxQueryNewPaletteEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxWindowCreateEvent, wxEvent)
     IMPLEMENT_DYNAMIC_CLASS(wxWindowDestroyEvent, wxEvent)
+    IMPLEMENT_DYNAMIC_CLASS(wxHelpEvent, wxCommandEvent)
 #endif // wxUSE_GUI
 
 const wxEventTable *wxEvtHandler::GetEventTable() const
@@ -524,14 +525,12 @@ void wxQueryNewPaletteEvent::CopyObject(wxObject& obj_d) const
 }
 
 wxWindowCreateEvent::wxWindowCreateEvent(wxWindow *win)
-                   : wxEvent()
 {
     SetEventType(wxEVT_CREATE);
     SetEventObject(win);
 }
 
 wxWindowDestroyEvent::wxWindowDestroyEvent(wxWindow *win)
-                    : wxEvent()
 {
     SetEventType(wxEVT_DESTROY);
     SetEventObject(win);
@@ -803,7 +802,14 @@ bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event)
     // BC++ doesn't like testing for m_fn without != 0
     for ( int i = 0; table.entries[i].m_fn != 0; i++ )
     {
+        // the line using reference exposes a bug in gcc: although it _seems_
+        // to work, it leads to weird crashes later on during program
+        // execution
+#ifdef __GNUG__
+        wxEventTableEntry entry = table.entries[i];
+#else
         const wxEventTableEntry& entry = table.entries[i];
+#endif
 
         // match only if the event type is the same and the id is either -1 in
         // the event table (meaning "any") or the event id matches the id
@@ -827,8 +833,6 @@ bool wxEvtHandler::SearchEventTable(wxEventTable& table, wxEvent& event)
                 return !event.GetSkipped();
             }
         }
-
-        i++;
     }
 
     return FALSE;