diff options
author | Tao Bao <tbao@google.com> | 2017-10-28 08:39:45 +0200 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-11-02 05:42:49 +0100 |
commit | ba30867b0174463bebefc92198ee24ec9e4bdfa3 (patch) | |
tree | 1422024a19eae60caa2c60c5cf532ca27d203a30 | |
parent | release-request-1f2fcfef-9736-44dc-8628-3ba96dac60db-for-git_oc-mr1-release-4343541 snap-temp-L73700000103533431 (diff) | |
download | android_bootable_recovery-ba30867b0174463bebefc92198ee24ec9e4bdfa3.tar android_bootable_recovery-ba30867b0174463bebefc92198ee24ec9e4bdfa3.tar.gz android_bootable_recovery-ba30867b0174463bebefc92198ee24ec9e4bdfa3.tar.bz2 android_bootable_recovery-ba30867b0174463bebefc92198ee24ec9e4bdfa3.tar.lz android_bootable_recovery-ba30867b0174463bebefc92198ee24ec9e4bdfa3.tar.xz android_bootable_recovery-ba30867b0174463bebefc92198ee24ec9e4bdfa3.tar.zst android_bootable_recovery-ba30867b0174463bebefc92198ee24ec9e4bdfa3.zip |
-rw-r--r-- | update_verifier/update_verifier.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/update_verifier/update_verifier.cpp b/update_verifier/update_verifier.cpp index faebbede0..ba7b7aec4 100644 --- a/update_verifier/update_verifier.cpp +++ b/update_verifier/update_verifier.cpp @@ -137,11 +137,12 @@ static bool read_blocks(const std::string& partition, const std::string& range_s LOG(ERROR) << "Error in parsing range string."; return false; } + range_count /= 2; std::vector<std::future<bool>> threads; size_t thread_num = std::thread::hardware_concurrency() ?: 4; - thread_num = std::min(thread_num, range_count / 2); - size_t group_range_count = range_count / thread_num; + thread_num = std::min(thread_num, range_count); + size_t group_range_count = (range_count + thread_num - 1) / thread_num; for (size_t t = 0; t < thread_num; t++) { auto thread_func = [t, group_range_count, &dm_block_device, &ranges, &partition]() { @@ -154,7 +155,8 @@ static bool read_blocks(const std::string& partition, const std::string& range_s return false; } - for (size_t i = 1 + group_range_count * t; i < group_range_count * (t + 1) + 1; i += 2) { + for (size_t i = group_range_count * 2 * t + 1; + i < std::min(group_range_count * 2 * (t + 1) + 1, ranges.size()); i += 2) { unsigned int range_start, range_end; bool parse_status = android::base::ParseUint(ranges[i], &range_start); parse_status = parse_status && android::base::ParseUint(ranges[i + 1], &range_end); |