Fix use of dangling reference in wxFileSystemWatcher Unix code
Don't reference the "watch" object after possibly destroying it when handling IN_DELETE_SELF inotify notification. Closes #17122.
This commit is contained in:
committed by
Vadim Zeitlin
parent
6537356236
commit
34d39c9dfb
@@ -107,6 +107,7 @@ wxGTK:
|
|||||||
- Improve wxSpinCtrl best size calculation.
|
- Improve wxSpinCtrl best size calculation.
|
||||||
- Implement support for icon locations in wxMimeTypesManager (Hanmac).
|
- Implement support for icon locations in wxMimeTypesManager (Hanmac).
|
||||||
- Cosmetic fix for empty wxCheckBoxes display (Chuddah).
|
- Cosmetic fix for empty wxCheckBoxes display (Chuddah).
|
||||||
|
- Fix crashes in wxFileSystemWatcher implementation (David Hart).
|
||||||
|
|
||||||
wxMSW:
|
wxMSW:
|
||||||
|
|
||||||
|
@@ -385,6 +385,7 @@ protected:
|
|||||||
// if the wd isn't found: repeated IN_DELETE_SELFs can occur
|
// if the wd isn't found: repeated IN_DELETE_SELFs can occur
|
||||||
wxFileName fn = GetEventPath(watch, inevt);
|
wxFileName fn = GetEventPath(watch, inevt);
|
||||||
wxString path(fn.GetPathWithSep());
|
wxString path(fn.GetPathWithSep());
|
||||||
|
const wxString filespec(watch.GetFilespec());
|
||||||
|
|
||||||
if (m_watchMap.erase(inevt.wd) == 1)
|
if (m_watchMap.erase(inevt.wd) == 1)
|
||||||
{
|
{
|
||||||
@@ -406,7 +407,7 @@ protected:
|
|||||||
|
|
||||||
// Tell the owner, in case it's interested
|
// Tell the owner, in case it's interested
|
||||||
// If there's a filespec, assume he's not
|
// If there's a filespec, assume he's not
|
||||||
if (watch.GetFilespec().empty())
|
if (filespec.empty())
|
||||||
{
|
{
|
||||||
wxFileSystemWatcherEvent event(flags, fn, fn);
|
wxFileSystemWatcherEvent event(flags, fn, fn);
|
||||||
SendEvent(event);
|
SendEvent(event);
|
||||||
|
Reference in New Issue
Block a user