From 857ed61ef2bac025e15ab6345e2fec96bf2cbe79 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 10 Aug 2013 13:29:19 +0200 Subject: Bugfix SmDirWatcher Don't enqueue anything if the INOTIFY_MASK doesn't match. Could be the reason for random crashes... --- smdirwatcher.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'smdirwatcher.cpp') diff --git a/smdirwatcher.cpp b/smdirwatcher.cpp index 371e7cf..64ab330 100644 --- a/smdirwatcher.cpp +++ b/smdirwatcher.cpp @@ -70,17 +70,19 @@ void SmDirWatcher::run(){ quint32 mask = e->mask; QString name = QString("%1/%2").arg(mCurrent).arg(e->name); DWEvent curEvent = None; + QPair c; if(mask & IN_CREATE || mask & IN_MOVED_TO){ curEvent = Added; - } - if(mask & IN_DELETE || mask & IN_MOVED_FROM){ + }else if(mask & IN_DELETE || mask & IN_MOVED_FROM){ curEvent = Deleted; - } - if(mask & IN_CLOSE_WRITE || e->mask & IN_MODIFY){ + }else if(mask & IN_CLOSE_WRITE || e->mask & IN_MODIFY){ curEvent = Modified; + }else{ + goto out; } - QPair c = qMakePair(name, curEvent); + c = qMakePair(name, curEvent); mDataQueue->enqueue(c); + out: mSemUsed->release(); i += sizeof(inotify_event) + e->len; } -- cgit v1.2.3-70-g09d2