summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-06-26 09:54:00 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-06-26 09:54:00 -0400
commit73795506229111ac8b65082921d563e53b5bdecd (patch)
tree764d0bcd52f2f819a463fbc18d21c3d783d28b03 /src
parent769d4eae3cd98e717a9bda7612cf755ac0083f6f (diff)
pke: clean up memory leaks
Diffstat (limited to 'src')
-rw-r--r--src/entities.cpp5
-rw-r--r--src/thread-pool.cpp1
2 files changed, 6 insertions, 0 deletions
diff --git a/src/entities.cpp b/src/entities.cpp
index dc54cdf..6fc56a8 100644
--- a/src/entities.cpp
+++ b/src/entities.cpp
@@ -1141,6 +1141,7 @@ void EntityType_Load(EntityType &et) {
// cleanup
AM_Release(modelBinHandle);
AM_Release(assetHandle);
+ cgltf_free(const_cast<cgltf_data*>(helper.gltfData));
helper.etdHelpers.bkt = nullptr;
helper.vertMemoryRequirements.bkt = nullptr;
helper.instMemoryRequirements.bkt = nullptr;
@@ -1158,6 +1159,10 @@ void EntityType_Unload(EntityType &et, CompGrBinds *grBindsArr[1]) {
EntityType_Inner_DestroyDescriptors(&et);
for (long k = 0; k < et.detailsCount; ++k) {
EntityTypeDetails &etd = et.details[k];
+
+ // TODO maybe i should just change `shape` to the actual type rather than a parent type?
+ if (etd.bt.shape != nullptr) pk_delete_bkt(etd.bt.shape, sizeof(btConvexHullShape), MemBkt_Bullet);
+
auto *grBinds = grBindsArr[k];
if (grBinds != nullptr) {
if (grBinds->vertexBD.buffer != VK_NULL_HANDLE)
diff --git a/src/thread-pool.cpp b/src/thread-pool.cpp
index f110e42..68353b9 100644
--- a/src/thread-pool.cpp
+++ b/src/thread-pool.cpp
@@ -43,6 +43,7 @@ void ThreadRun(ThreadPool *tp) {
}
assert(j != nullptr);
(*j)();
+ j->~packaged_task<void()>();
pk_delete<std::packaged_task<void()>>(j, tp->bkt);
tp->completedCount = tp->completedCount + 1;
}