Fixed wxexpr.cpp bug (quote wasn't being removed in new MB code);

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
This commit is contained in:
Julian Smart
1999-04-19 10:14:51 +00:00
parent cedda7e689
commit 63863e09de
3 changed files with 15 additions and 9 deletions

View File

@@ -1194,6 +1194,10 @@ public:
bool SearchDynamicEventTable( wxEvent& event ); bool SearchDynamicEventTable( wxEvent& event );
#if wxUSE_THREADS
void ClearEventLocker() { delete m_eventsLocker; m_eventsLocker = NULL; };
#endif
private: private:
static const wxEventTableEntry sm_eventTableEntries[]; static const wxEventTableEntry sm_eventTableEntries[];
@@ -1203,18 +1207,18 @@ protected:
virtual const wxEventTable *GetEventTable() const; virtual const wxEventTable *GetEventTable() const;
protected: protected:
wxEvtHandler* m_nextHandler; wxEvtHandler* m_nextHandler;
wxEvtHandler* m_previousHandler; wxEvtHandler* m_previousHandler;
bool m_enabled; // Is event handler enabled? bool m_enabled; // Is event handler enabled?
wxList* m_dynamicEvents; wxList* m_dynamicEvents;
wxList* m_pendingEvents; wxList* m_pendingEvents;
#if wxUSE_THREADS #if wxUSE_THREADS
wxCriticalSection* m_eventsLocker; wxCriticalSection* m_eventsLocker;
#endif #endif
// optimization: instead of using costly IsKindOf() to decide whether we're // optimization: instead of using costly IsKindOf() to decide whether we're
// a window (which is true in 99% of cases), use this flag // a window (which is true in 99% of cases), use this flag
bool m_isWindow; bool m_isWindow;
}; };
typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&); typedef void (wxEvtHandler::*wxEventFunction)(wxEvent&);

View File

@@ -1197,13 +1197,13 @@ char *wxmake_string(char *str)
int len, i; int len, i;
const wxMB2WXbuf sbuf = wxConv_libc.cMB2WX(str); const wxMB2WXbuf sbuf = wxConv_libc.cMB2WX(str);
str++; /* skip leading quote */ // str++; /* skip leading quote */
len = wxStrlen(sbuf) - 1; /* ignore trailing quote */ len = wxStrlen(sbuf) - 1; /* ignore trailing quote */
s = new wxChar[len + 1]; s = new wxChar[len + 1];
t = s; t = s;
for(i=0; i<len; i++) 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('"'))
{ {

View File

@@ -562,6 +562,8 @@ void wxApp::CleanUp()
#if wxUSE_THREADS #if wxUSE_THREADS
delete wxPendingEvents; delete wxPendingEvents;
delete wxPendingEventsLocker; delete wxPendingEventsLocker;
// If we don't do the following, we get an apparent memory leak.
((wxEvtHandler&) wxDefaultValidator).ClearEventLocker();
#endif #endif
wxClassInfo::CleanUpClasses(); wxClassInfo::CleanUpClasses();