From d83a7118fa5e96b7ca6a97365168c2d9d98f7f53 Mon Sep 17 00:00:00 2001 From: csoler Date: Mon, 22 Nov 2010 21:15:21 +0000 Subject: [PATCH] removed potential cross-lock situation (reported by Valgrind) git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3855 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/ft/ftcontroller.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libretroshare/src/ft/ftcontroller.cc b/libretroshare/src/ft/ftcontroller.cc index 79264dbe4..46394eef1 100644 --- a/libretroshare/src/ft/ftcontroller.cc +++ b/libretroshare/src/ft/ftcontroller.cc @@ -256,12 +256,16 @@ void ftController::run() tickTransfers() ; { - RsStackMutex stack2(doneMutex); + std::list files_to_complete ; - for(std::list::iterator it(mDone.begin()); it != mDone.end(); it++) + { + RsStackMutex stack2(doneMutex); + files_to_complete = mDone ; + mDone.clear(); + } + + for(std::list::iterator it(files_to_complete.begin()); it != files_to_complete.end(); ++it) completeFile(*it); - - mDone.clear(); } if(cnt++ % 10 == 0)