Don't remove elements while iterating through active_layers.

Change-Id: I595e51aea635dad13b6e919dee2229defc4da55a
(cherry picked from commit b735b6d52dad4d72e16968aa66a8282df2c733ea)
diff --git a/vulkan/libvulkan/loader.cpp b/vulkan/libvulkan/loader.cpp
index 888c7d7..3da5b70 100644
--- a/vulkan/libvulkan/loader.cpp
+++ b/vulkan/libvulkan/loader.cpp
@@ -348,12 +348,9 @@
     object->active_layers.push_back(element);
 }
 
-template <class TObject>
-void DeactivateLayer(TObject* object,
-                     Instance* instance,
+void DeactivateLayer(Instance* instance,
                      Vector<LayerMapIterator>::iterator& element) {
     LayerMapIterator& layer_map_data = *element;
-    object->active_layers.erase(element);
     LayerData& layer_data = layer_map_data->second;
     pthread_mutex_lock(&instance->layer_lock);
     layer_data.ref_count--;
@@ -556,7 +553,7 @@
     }
     for (auto it = instance->active_layers.begin();
          it != instance->active_layers.end(); ++it) {
-        DeactivateLayer(instance, instance, it);
+        DeactivateLayer(instance, it);
     }
     const VkAllocCallbacks* alloc = instance->alloc;
     instance->~VkInstance_T();
@@ -1117,9 +1114,8 @@
     Device* device = static_cast<Device*>(vtbl->device);
     for (auto it = device->active_layers.begin();
          it != device->active_layers.end(); ++it) {
-        DeactivateLayer(device, device->instance, it);
+        DeactivateLayer(device->instance, it);
     }
-    device->active_layers.clear();
     vtbl->DestroyDevice(drv_device);
     DestroyDevice(device);
     return VK_SUCCESS;