fixed one of the remaining memory leaks (wxMSW, wxDefaultValidator)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2229
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
bool SearchDynamicEventTable( wxEvent& event );
bool SearchDynamicEventTable( wxEvent& event );
+#if wxUSE_THREADS
+ void ClearEventLocker() { delete m_eventsLocker; m_eventsLocker = NULL; };
+#endif
+
private:
static const wxEventTableEntry sm_eventTableEntries[];
private:
static const wxEventTableEntry sm_eventTableEntries[];
virtual const wxEventTable *GetEventTable() const;
protected:
virtual const wxEventTable *GetEventTable() const;
protected:
- wxEvtHandler* m_nextHandler;
- wxEvtHandler* m_previousHandler;
- bool m_enabled; // Is event handler enabled?
- wxList* m_dynamicEvents;
- wxList* m_pendingEvents;
+ wxEvtHandler* m_nextHandler;
+ wxEvtHandler* m_previousHandler;
+ bool m_enabled; // Is event handler enabled?
+ wxList* m_dynamicEvents;
+ wxList* m_pendingEvents;
- wxCriticalSection* m_eventsLocker;
+ wxCriticalSection* m_eventsLocker;
#endif
// optimization: instead of using costly IsKindOf() to decide whether we're
// a window (which is true in 99% of cases), use this flag
#endif
// optimization: instead of using costly IsKindOf() to decide whether we're
// a window (which is true in 99% of cases), use this flag
};
typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);
};
typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);
int len, i;
const wxMB2WXbuf sbuf = wxConv_libc.cMB2WX(str);
int len, i;
const wxMB2WXbuf sbuf = wxConv_libc.cMB2WX(str);
- str++; /* skip leading quote */
+// str++; /* skip leading quote */
len = wxStrlen(sbuf) - 1; /* ignore trailing quote */
s = new wxChar[len + 1];
t = s;
len = wxStrlen(sbuf) - 1; /* ignore trailing quote */
s = new wxChar[len + 1];
t = s;
+ for(i=1; i<len; i++) // 1 since we want to skip leading quote
{
if (sbuf[i] == _T('\\') && sbuf[i+1] == _T('"'))
{
{
if (sbuf[i] == _T('\\') && sbuf[i+1] == _T('"'))
{
#if wxUSE_THREADS
delete wxPendingEvents;
delete wxPendingEventsLocker;
#if wxUSE_THREADS
delete wxPendingEvents;
delete wxPendingEventsLocker;
+ // If we don't do the following, we get an apparent memory leak.
+ ((wxEvtHandler&) wxDefaultValidator).ClearEventLocker();
#endif
wxClassInfo::CleanUpClasses();
#endif
wxClassInfo::CleanUpClasses();