diff options
author | 2023-12-15 14:24:59 -0800 | |
---|---|---|
committer | 2023-12-15 15:14:43 -0800 | |
commit | 6742ee98ac9b9891888e7fc4c73b6257cc70734a (patch) | |
tree | 70e3f7a8773e19699560a6899da356b7da3aa8e2 | |
parent | b507b71cc52f9203657f221808eef04d58dd6398 (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.h | 9 |
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); |