diff options
author | Arno <am@disconnect.de> | 2013-08-28 09:32:30 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-08-28 09:32:30 +0200 |
commit | 1ee897fbb51cb431cba7690076a29a3ca2ddc1a7 (patch) | |
tree | 127c2ff9ff239e672159d44aa161e99ec222898c /fileview.cpp | |
parent | dbfc4f7bf395bf20aa21058372d47d17d040f553 (diff) | |
download | SheMov-1ee897fbb51cb431cba7690076a29a3ca2ddc1a7.tar.gz SheMov-1ee897fbb51cb431cba7690076a29a3ca2ddc1a7.tar.bz2 SheMov-1ee897fbb51cb431cba7690076a29a3ca2ddc1a7.zip |
Fix crashes in SmDirWatcher (again)
This reverts commit dbfc4f7bf395bf20aa21058372d47d17d040f553. It was
totally and utterly wrong.
This is what really happened, hopefully:
Since a Semaphore can guard more than a single resource, it could happen
that both mSemUsed and mSemFree were available at the same time. So it
could happen that both the watcher and the datacollector tried to access
the dataqueue at the same time. Since ->dequeue() is not atomic, this
could throw of the internal iterator from the QList, resulting in a
crash.
The solution is simple: Guard it with a shared Mutex.
Diffstat (limited to 'fileview.cpp')
0 files changed, 0 insertions, 0 deletions