aboutsummaryrefslogtreecommitdiff
path: root/layers/core_validation.cpp
diff options
context:
space:
mode:
authorGabríel Arthúr Pétursson <gabriel@system.is>2017-06-03 23:49:33 +0000
committerChris Forbes <chrisf@ijw.co.nz>2017-06-07 14:57:20 -0700
commitf35132b44bd7e3aca6b36d31aa1b09c579ac5a5a (patch)
treec05c3537c90540e86dd9b7fc21824e2b04ac6ecd /layers/core_validation.cpp
parent2031e355cba10fc1f91cadf51faadaf7cb175db1 (diff)
downloadusermoji-f35132b44bd7e3aca6b36d31aa1b09c579ac5a5a.tar.xz
layers: Fix leak of descriptor pool states
Diffstat (limited to 'layers/core_validation.cpp')
-rw-r--r--layers/core_validation.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp
index 3a0a893d..801b36c5 100644
--- a/layers/core_validation.cpp
+++ b/layers/core_validation.cpp
@@ -3020,15 +3020,15 @@ static void freeDescriptorSet(layer_data *dev_data, cvdescriptorset::DescriptorS
// Free all DS Pools including their Sets & related sub-structs
// NOTE : Calls to this function should be wrapped in mutex
static void deletePools(layer_data *dev_data) {
- if (dev_data->descriptorPoolMap.size() <= 0) return;
- for (auto ii = dev_data->descriptorPoolMap.begin(); ii != dev_data->descriptorPoolMap.end(); ++ii) {
+ for (auto ii = dev_data->descriptorPoolMap.begin(); ii != dev_data->descriptorPoolMap.end();) {
// Remove this pools' sets from setMap and delete them
- for (auto ds : (*ii).second->sets) {
+ for (auto ds : ii->second->sets) {
freeDescriptorSet(dev_data, ds);
}
- (*ii).second->sets.clear();
+ ii->second->sets.clear();
+ delete ii->second;
+ ii = dev_data->descriptorPoolMap.erase(ii);
}
- dev_data->descriptorPoolMap.clear();
}
static void clearDescriptorPool(layer_data *dev_data, const VkDevice device, const VkDescriptorPool pool,
@@ -5396,6 +5396,7 @@ static void PostCallRecordDestroyDescriptorPool(layer_data *dev_data, VkDescript
freeDescriptorSet(dev_data, ds);
}
dev_data->descriptorPoolMap.erase(descriptorPool);
+ delete desc_pool_state;
}
VKAPI_ATTR void VKAPI_CALL DestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool,