Skip to content

Commit 474bd50

Browse files
committed
Fix use after free
1 parent 80c9d89 commit 474bd50

2 files changed

Lines changed: 8 additions & 5 deletions

File tree

src/Renderer.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,11 @@ void Renderer::initializeVulkan() {
132132
pdf.shaderStorageImageWriteWithoutFormat = true;
133133
pdf.shaderInt64 = true;
134134
// pdf.robustBufferAccess = true;
135-
// pdf12.shaderFloat16 = true;
136-
// pdf12.shaderBufferInt64Atomics = true;
137-
// pdf12.shaderSharedInt64Atomics = true;
135+
// pdf12.shaderFloat16 = true;]
136+
#ifndef __APPLE__
137+
pdf12.shaderBufferInt64Atomics = true;
138+
pdf12.shaderSharedInt64Atomics = true;
139+
#endif
138140

139141
context->createLogicalDevice(pdf, pdf11, pdf12);
140142
context->createDescriptorPool(1);

src/vulkan/Buffer.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ void Buffer::alloc() {
3535
if (res != VK_SUCCESS) {
3636
throw std::runtime_error("Failed to create buffer");
3737
}
38-
buffer = static_cast<vk::Buffer>(vkBuffer);
38+
buffer = vk::Buffer(vkBuffer);
3939
}
4040

4141
Buffer::Buffer(const std::shared_ptr<VulkanContext>& _context, uint32_t size, vk::BufferUsageFlags usage,
@@ -120,12 +120,13 @@ void Buffer::realloc(uint64_t newSize) {
120120
size = newSize;
121121
alloc();
122122

123+
vk::DescriptorBufferInfo bufferInfo(buffer, allocation_info.offset, size);
124+
123125
std::vector<vk::WriteDescriptorSet> writeDescriptorSets;
124126
for (auto& tuple: boundDescriptorSets) {
125127
auto descriptorSet = std::get<0>(tuple);
126128
auto shared = descriptorSet.lock();
127129
if (shared) {
128-
vk::DescriptorBufferInfo bufferInfo(buffer, 0, size);
129130
writeDescriptorSets.emplace_back(shared->descriptorSets[std::get<1>(tuple)].get(),
130131
std::get<2>(tuple), 0, 1,
131132
std::get<3>(tuple), nullptr,

0 commit comments

Comments
 (0)