diff options
Diffstat (limited to 'src/DHTTaskExecutor.cc')
| -rw-r--r-- | src/DHTTaskExecutor.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/DHTTaskExecutor.cc b/src/DHTTaskExecutor.cc index 87949110..ba57c1f3 100644 --- a/src/DHTTaskExecutor.cc +++ b/src/DHTTaskExecutor.cc @@ -44,7 +44,7 @@ namespace aria2 { -DHTTaskExecutor::DHTTaskExecutor(size_t numConcurrent) +DHTTaskExecutor::DHTTaskExecutor(int numConcurrent) : numConcurrent_(numConcurrent) {} @@ -55,7 +55,12 @@ void DHTTaskExecutor::update() execTasks_.erase(std::remove_if(execTasks_.begin(), execTasks_.end(), mem_fun_sh(&DHTTask::finished)), execTasks_.end()); - size_t r = numConcurrent_-execTasks_.size(); + int r; + if(static_cast<size_t>(numConcurrent_) > execTasks_.size()) { + r = numConcurrent_-execTasks_.size(); + } else { + r = 0; + } while(r && !queue_.empty()) { SharedHandle<DHTTask> task = queue_.front(); queue_.pop_front(); |
