Преглед изворни кода

Core: Use std::array for managing kernel object space

These avoid relying on memset for clearing the arrays.
Lioncash пре 12 година
родитељ
комит
ab4648d3ca
2 измењених фајлова са 5 додато и 5 уклоњено
  1. 1 2
      src/core/hle/kernel/kernel.cpp
  2. 4 3
      src/core/hle/kernel/kernel.h

+ 1 - 2
src/core/hle/kernel/kernel.cpp

@@ -17,7 +17,6 @@ Handle g_main_thread = 0;
 ObjectPool g_object_pool;
 ObjectPool g_object_pool;
 
 
 ObjectPool::ObjectPool() {
 ObjectPool::ObjectPool() {
-    memset(occupied, 0, sizeof(bool) * MAX_COUNT);
     next_id = INITIAL_NEXT_ID;
     next_id = INITIAL_NEXT_ID;
 }
 }
 
 
@@ -57,7 +56,7 @@ void ObjectPool::Clear() {
             delete pool[i];
             delete pool[i];
         occupied[i] = false;
         occupied[i] = false;
     }
     }
-    memset(pool, 0, sizeof(Object*)*MAX_COUNT);
+    pool.fill(nullptr);
     next_id = INITIAL_NEXT_ID;
     next_id = INITIAL_NEXT_ID;
 }
 }
 
 

+ 4 - 3
src/core/hle/kernel/kernel.h

@@ -4,6 +4,7 @@
 
 
 #pragma once
 #pragma once
 
 
+#include <array>
 #include <string>
 #include <string>
 #include "common/common.h"
 #include "common/common.h"
 
 
@@ -160,9 +161,9 @@ private:
         INITIAL_NEXT_ID = 0x10,
         INITIAL_NEXT_ID = 0x10,
     };
     };
 
 
-    Object* pool[MAX_COUNT];
-    bool    occupied[MAX_COUNT];
-    int     next_id;
+    std::array<Object*, MAX_COUNT> pool;
+    std::array<bool, MAX_COUNT> occupied;
+    int next_id;
 };
 };
 
 
 extern ObjectPool g_object_pool;
 extern ObjectPool g_object_pool;