diff options
author | Arno <am@disconnect.de> | 2013-08-10 13:29:19 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-08-10 13:29:19 +0200 |
commit | 857ed61ef2bac025e15ab6345e2fec96bf2cbe79 (patch) | |
tree | 5c7e297f62cef0fe7471f77f9d3af8f9a74b1244 /smdirwatcher.cpp | |
parent | 6e4a72a3442af9e6c4010cccc2329035008df167 (diff) | |
download | SheMov-857ed61ef2bac025e15ab6345e2fec96bf2cbe79.tar.gz SheMov-857ed61ef2bac025e15ab6345e2fec96bf2cbe79.tar.bz2 SheMov-857ed61ef2bac025e15ab6345e2fec96bf2cbe79.zip |
Bugfix SmDirWatcher
Don't enqueue anything if the INOTIFY_MASK doesn't match. Could be the
reason for random crashes...
Diffstat (limited to 'smdirwatcher.cpp')
-rw-r--r-- | smdirwatcher.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
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<QString, DWEvent> 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<QString, DWEvent> c = qMakePair(name, curEvent); + c = qMakePair(name, curEvent); mDataQueue->enqueue(c); + out: mSemUsed->release(); i += sizeof(inotify_event) + e->len; } |