Vulkan: Fix SharedFence::mRefCountedFence leak
This was introduced in crrev.com/c/4159871. mRefCountedFence itself is
not been properly deleted.
Bug: b/261106868
Change-Id: I91b620d96064cc0a8a155327336881d26a5bc33b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4198475
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/CommandProcessor.cpp b/src/libANGLE/renderer/vulkan/CommandProcessor.cpp
index 5714810..5b51be8 100644
--- a/src/libANGLE/renderer/vulkan/CommandProcessor.cpp
+++ b/src/libANGLE/renderer/vulkan/CommandProcessor.cpp
@@ -207,8 +207,12 @@
if (!mRefCountedFence->isReferenced())
{
mRefCountedFence->get().destroy(device);
+ SafeDelete(mRefCountedFence);
}
- mRefCountedFence = nullptr;
+ else
+ {
+ mRefCountedFence = nullptr;
+ }
}
}
@@ -220,8 +224,13 @@
if (!mRefCountedFence->isReferenced())
{
mRecycler->recycle(std::move(mRefCountedFence->get()));
+ ASSERT(!mRefCountedFence->get().valid());
+ SafeDelete(mRefCountedFence);
}
- mRefCountedFence = nullptr;
+ else
+ {
+ mRefCountedFence = nullptr;
+ }
}
}