Don't assume layers exist when prop is set
Previously we assumed that layers were valid when set via adb
shellprop but instead we should make sure they exist first. If they
don't ignore it and continue.
Change-Id: I161b7afa58e747080a9eeb112f933976a381b4c0
(cherry picked from commit c9625127034ab237da69d7da766e20d666545b13)
diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
index 4b55b55..888c7d7 100644
--- a/vulkan/libvulkan/loader.cpp
+++ b/vulkan/libvulkan/loader.cpp
@@ -320,6 +320,9 @@
void ActivateLayer(TObject* object, Instance* instance, const String& name) {
// If object has layer, do nothing
auto element = instance->layers.find(name);
+ if (element == instance->layers.end()) {
+ return;
+ }
if (std::find(object->active_layers.begin(), object->active_layers.end(),
element) != object->active_layers.end()) {
ALOGW("Layer %s already activated; skipping", name.c_str());
@@ -405,10 +408,7 @@
size_t end, start = 0;
while ((end = layer_prop_str.find(':', start)) != std::string::npos) {
layer_name = layer_prop_str.substr(start, end - start);
- auto element = instance->layers.find(layer_name);
- if (element != instance->layers.end()) {
- ActivateLayer(object, instance, layer_name);
- }
+ ActivateLayer(object, instance, layer_name);
start = end + 1;
}
Vector<String> layer_names(CallbackAllocator<String>(instance->alloc));