Jelajahi Sumber

leak prevention according to: https://vld.codeplex.com/ apparently we weren't freeing the entirety of the ProfilerData linked list when resetting the Profiler, and that was leading to a pinhole leak per profiled block

Azaezel 10 tahun lalu
induk
melakukan
a4c09d1680
1 mengubah file dengan 6 tambahan dan 3 penghapusan
  1. 6 3
      Engine/source/platform/profiler.cpp

+ 6 - 3
Engine/source/platform/profiler.cpp

@@ -212,11 +212,14 @@ Profiler::~Profiler()
 void Profiler::reset()
 {
    mEnabled = false; // in case we're in a profiler call.
-   while(mProfileList)
+   ProfilerData * head = mProfileList;
+   ProfilerData * curr = NULL;
+   while ((curr = head) != NULL)
    {
-      free(mProfileList);
-      mProfileList = NULL;
+      head = head->mNextProfilerData;
+      free(curr);
    }
+
    for(ProfilerRootData *walk = ProfilerRootData::sRootList; walk; walk = walk->mNextRoot)
    {
       walk->mFirstProfilerData = 0;