]> cloud.milkyroute.net Git - dolphin.git/commit
A crash occurs if updateItemStates runs between the
authorSimeon Bird <bladud@gmail.com>
Sun, 13 Jan 2013 18:49:21 +0000 (13:49 -0500)
committerSimeon Bird <bladud@gmail.com>
Tue, 15 Jan 2013 16:10:58 +0000 (11:10 -0500)
commite7fe50bd3d5a2a1f8427878086ff94deb31091bb
tree5c2dc3307908f6553416acb6b3041c8ea9225c44
parent256792355d01485eb148f8fb50f92e1c276cb769
A crash occurs if updateItemStates runs between the
UpdateItemStatesThread finishing and the finished() signal being
delivered.

In this case, a new thread was not created, because the old thread
still existed. However, pendingItemStatesUpdate was not set, because the
thread was not running. Instead, the old thread was restarted.

This meant that the finished() signal from the first run could be delivered
while the thread was running for a second time, causing the thread to be
deleted while still running and thus a crash.

Solution: set pendingItemStatesUpdate if the thread is non-null,
even if it is not running, knowing that slotThreadFinished has not yet run,
and will call updateItemStates itself.

BUG: 302264
FIXED-IN: 4.10
REVIEW: 107656
src/views/versioncontrol/versioncontrolobserver.cpp