linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #05070
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2759: lock when updating finished transfer data
------------------------------------------------------------
revno: 2759
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Tue 2011-12-27 16:21:02 +0100
message:
lock when updating finished transfer data
modified:
changelog.txt
dcpp/FinishedManager.cpp
dcpp/FinishedManager.h
dcpp/QueueManager.cpp
win32/FinishedFrameBase.h
--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk
Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'changelog.txt'
--- changelog.txt 2011-12-27 13:41:47 +0000
+++ changelog.txt 2011-12-27 15:21:02 +0000
@@ -57,6 +57,7 @@
* [L#900650] Fix removal of same ADC users logged into multiple hubs when they go offline (emtee)
* Plug memory leaks in list and tree controls (poy)
* [L#735512] Switch to Boost.Atomic to solve freezes (poy)
+* [L#871975] Safer updating of the finished transfer window (poy)
-- 0.782 2011-03-05 --
* Prevent a remote crash triggered via malformed user commands (poy)
=== modified file 'dcpp/FinishedManager.cpp'
--- dcpp/FinishedManager.cpp 2011-12-22 22:14:45 +0000
+++ dcpp/FinishedManager.cpp 2011-12-27 15:21:02 +0000
@@ -44,7 +44,7 @@
clearULs();
}
-Lock FinishedManager::lockLists() {
+Lock FinishedManager::lock() {
return Lock(cs);
}
=== modified file 'dcpp/FinishedManager.h'
--- dcpp/FinishedManager.h 2011-04-13 19:16:51 +0000
+++ dcpp/FinishedManager.h 2011-12-27 15:21:02 +0000
@@ -39,7 +39,7 @@
typedef unordered_map<string, FinishedFileItemPtr> MapByFile;
typedef unordered_map<HintedUser, FinishedUserItemPtr, User::Hash> MapByUser;
- Lock lockLists();
+ Lock lock();
const MapByFile& getMapByFile(bool upload) const;
const MapByUser& getMapByUser(bool upload) const;
=== modified file 'dcpp/QueueManager.cpp'
--- dcpp/QueueManager.cpp 2011-12-25 17:31:16 +0000
+++ dcpp/QueueManager.cpp 2011-12-27 15:21:02 +0000
@@ -1770,7 +1770,7 @@
params["sfv"] = Util::toString(crcError ? 1 : 0);
{
- auto lock = FinishedManager::getInstance()->lockLists();
+ auto lock = FinishedManager::getInstance()->lock();
auto& map = FinishedManager::getInstance()->getMapByFile(false);
auto it = map.find(qi->getTarget());
=== modified file 'win32/FinishedFrameBase.h'
--- win32/FinishedFrameBase.h 2011-12-26 16:12:50 +0000
+++ win32/FinishedFrameBase.h 2011-12-27 15:21:02 +0000
@@ -244,6 +244,7 @@
if(sortCol != -1)
old = columns[sortCol];
+ auto lock = FinishedManager::getInstance()->lock();
{
StringList nicks;
for(auto i = entry->getUsers().begin(), iend = entry->getUsers().end(); i != iend; ++i)
@@ -331,6 +332,7 @@
if(sortCol != -1)
old = columns[sortCol];
+ auto lock = FinishedManager::getInstance()->lock();
columns[USERS_COLUMN_NICK] = WinUtil::getNicks(user);
columns[USERS_COLUMN_HUB] = Text::toT(Util::toString(ClientManager::getInstance()->getHubNames(user)));
columns[USERS_COLUMN_TRANSFERRED] = Text::toT(Util::formatBytes(entry->getTransferred()));
@@ -524,7 +526,7 @@
}
void updateLists() {
- auto lock = FinishedManager::getInstance()->lockLists();
+ auto lock = FinishedManager::getInstance()->lock();
{
HoldRedraw hold(files);
const FinishedManager::MapByFile& map = FinishedManager::getInstance()->getMapByFile(in_UL);