diff --git a/adb/client/adb_client.cpp b/adb/client/adb_client.cpp index 7e408a87a..89dcb27c4 100644 --- a/adb/client/adb_client.cpp +++ b/adb/client/adb_client.cpp @@ -398,9 +398,15 @@ std::string format_host_command(const char* command) { } bool adb_get_feature_set(FeatureSet* feature_set, std::string* error) { - std::string result; - if (adb_query(format_host_command("features"), &result, error)) { - *feature_set = StringToFeatureSet(result); + static FeatureSet* features = nullptr; + if (!features) { + std::string result; + if (adb_query(format_host_command("features"), &result, error)) { + features = new FeatureSet(StringToFeatureSet(result)); + } + } + if (features) { + *feature_set = *features; return true; } feature_set->clear();