summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--update_verifier/update_verifier.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/update_verifier/update_verifier.cpp b/update_verifier/update_verifier.cpp
index faebbede..ba7b7aec 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
137 LOG(ERROR) << "Error in parsing range string."; 137 LOG(ERROR) << "Error in parsing range string.";
138 return false; 138 return false;
139 } 139 }
140 range_count /= 2;
140 141
141 std::vector<std::future<bool>> threads; 142 std::vector<std::future<bool>> threads;
142 size_t thread_num = std::thread::hardware_concurrency() ?: 4; 143 size_t thread_num = std::thread::hardware_concurrency() ?: 4;
143 thread_num = std::min(thread_num, range_count / 2); 144 thread_num = std::min(thread_num, range_count);
144 size_t group_range_count = range_count / thread_num; 145 size_t group_range_count = (range_count + thread_num - 1) / thread_num;
145 146
146 for (size_t t = 0; t < thread_num; t++) { 147 for (size_t t = 0; t < thread_num; t++) {
147 auto thread_func = [t, group_range_count, &dm_block_device, &ranges, &partition]() { 148 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
154 return false; 155 return false;
155 } 156 }
156 157
157 for (size_t i = 1 + group_range_count * t; i < group_range_count * (t + 1) + 1; i += 2) { 158 for (size_t i = group_range_count * 2 * t + 1;
159 i < std::min(group_range_count * 2 * (t + 1) + 1, ranges.size()); i += 2) {
158 unsigned int range_start, range_end; 160 unsigned int range_start, range_end;
159 bool parse_status = android::base::ParseUint(ranges[i], &range_start); 161 bool parse_status = android::base::ParseUint(ranges[i], &range_start);
160 parse_status = parse_status && android::base::ParseUint(ranges[i + 1], &range_end); 162 parse_status = parse_status && android::base::ParseUint(ranges[i + 1], &range_end);