layers: Use descriptor type to decide which pointer to free
diff --git a/layers/draw_state.cpp b/layers/draw_state.cpp
index fec569f..cb2c46d 100755
--- a/layers/draw_state.cpp
+++ b/layers/draw_state.cpp
@@ -1169,14 +1169,31 @@
         {
             case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:
                 pWDS = (VkWriteDescriptorSet*)pFreeUpdate;
-                if (pWDS->pImageInfo) {
-                    delete[] pWDS->pImageInfo;
-                }
-                if (pWDS->pBufferInfo) {
-                    delete[] pWDS->pBufferInfo;
-                }
-                if (pWDS->pTexelBufferView) {
-                    delete[] pWDS->pTexelBufferView;
+                switch (pWDS->descriptorType) {
+                case VK_DESCRIPTOR_TYPE_SAMPLER:
+                case VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER:
+                case VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE:
+                case VK_DESCRIPTOR_TYPE_STORAGE_IMAGE:
+                    {
+                        delete[] pWDS->pImageInfo;
+                    }
+                    break;
+                case VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER:
+                case VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER:
+                    {
+                        delete[] pWDS->pTexelBufferView;
+                    }
+                    break;
+                case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER:
+                case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER:
+                case VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC:
+                case VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC:
+                    {
+                        delete[] pWDS->pBufferInfo;
+                    }
+                    break;
+                default:
+                    break;
                 }
                 break;
             case VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET: