diff options
| author | Gabríel Arthúr Pétursson <gabriel@system.is> | 2017-06-03 23:49:33 +0000 |
|---|---|---|
| committer | Chris Forbes <chrisf@ijw.co.nz> | 2017-06-07 14:57:20 -0700 |
| commit | f35132b44bd7e3aca6b36d31aa1b09c579ac5a5a (patch) | |
| tree | c05c3537c90540e86dd9b7fc21824e2b04ac6ecd /layers/core_validation.cpp | |
| parent | 2031e355cba10fc1f91cadf51faadaf7cb175db1 (diff) | |
| download | usermoji-f35132b44bd7e3aca6b36d31aa1b09c579ac5a5a.tar.xz | |
layers: Fix leak of descriptor pool states
Diffstat (limited to 'layers/core_validation.cpp')
| -rw-r--r-- | layers/core_validation.cpp | 11 |
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, |
