Fix deallocation of uninitialized pointer

When pCreateInfo->setLayoutCount is 0, descriptorSets[0].bindings would
not be assigned the initial bindingStorage value, which is the start of
the additional memory that is allocated for the PipelineLayout object.
It is used in PipelineLayout::destroy() for deallocating said memory,
which leads to attempting to free an initialized pointer.

This was a regression caused by https://swiftshader-review.googlesource.com/c/SwiftShader/+/44328

Bug: b/154522740
Change-Id: I98f63d58e9d64b36f15d966afd1bc70c1ec97f59
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/45448
Presubmit-Ready: Nicolas Capens <nicolascapens@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Trevor Black <vantablack@google.com>
diff --git a/src/Vulkan/VkPipelineLayout.cpp b/src/Vulkan/VkPipelineLayout.cpp
index 9f0c12f..f01ed90 100644
--- a/src/Vulkan/VkPipelineLayout.cpp
+++ b/src/Vulkan/VkPipelineLayout.cpp
@@ -28,6 +28,9 @@
 {
 	Binding *bindingStorage = reinterpret_cast<Binding *>(mem);
 	uint32_t dynamicOffsetIndex = 0;
+
+	descriptorSets[0].bindings = bindingStorage;  // Used in destroy() for deallocation.
+
 	for(uint32_t i = 0; i < pCreateInfo->setLayoutCount; i++)
 	{
 		const vk::DescriptorSetLayout *setLayout = vk::Cast(pCreateInfo->pSetLayouts[i]);