summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Siarhei Vishniakou <svv@google.com> 2023-12-15 14:24:59 -0800
committer Siarhei Vishniakou <svv@google.com> 2023-12-15 15:14:43 -0800
commit6742ee98ac9b9891888e7fc4c73b6257cc70734a (patch)
tree70e3f7a8773e19699560a6899da356b7da3aa8e2
parentb507b71cc52f9203657f221808eef04d58dd6398 (diff)
Correctly handle empty vector when printing
before this CL, an empty vector passed to 'dumpVector' would cause a crash (in the good case) and undefined behaviour otherwise. In this CL, fix this function. Bug: 211379801 Test: TEST=inputflinger_tests; m $TEST && $ANDROID_HOST_OUT/nativetest64/$TEST/$TEST Change-Id: I93f4defb947f41d68f0ec22bd35b6c069fbc15e4
-rw-r--r--include/input/PrintTools.h9
1 files changed, 5 insertions, 4 deletions
diff --git a/include/input/PrintTools.h b/include/input/PrintTools.h
index 83fffa37c6..3470be4dce 100644
--- a/include/input/PrintTools.h
+++ b/include/input/PrintTools.h
@@ -117,11 +117,12 @@ std::string dumpMapKeys(const std::map<K, V>& map,
template <typename T>
std::string dumpVector(const std::vector<T>& values,
std::string (*valueToString)(const T&) = constToString) {
- std::string dump = valueToString(values[0]);
- for (size_t i = 1; i < values.size(); i++) {
- dump += ", " + valueToString(values[i]);
+ std::string out;
+ for (const auto& value : values) {
+ out += out.empty() ? "[" : ", ";
+ out += valueToString(value);
}
- return dump;
+ return out.empty() ? "[]" : (out + "]");
}
const char* toString(bool value);