meta: add a test (and a fix) for a corner case of meta_reset
This commit is contained in:
@@ -453,9 +453,11 @@ template<typename Type>
|
||||
inline void meta_reset(const id_type id) noexcept {
|
||||
auto &&context = internal::meta_context::from(locator<meta_ctx>::value_or());
|
||||
|
||||
for(auto it = context.value.begin(); it != context.value.end(); ++it) {
|
||||
for(auto it = context.value.begin(); it != context.value.end();) {
|
||||
if(it->second->id == id) {
|
||||
it = context.value.erase(it);
|
||||
} else {
|
||||
++it;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,9 +5,9 @@
|
||||
#include <vector>
|
||||
#include <gtest/gtest.h>
|
||||
#include <entt/core/hashed_string.hpp>
|
||||
#include <entt/locator/locator.hpp>
|
||||
#include <entt/core/type_info.hpp>
|
||||
#include <entt/core/utility.hpp>
|
||||
#include <entt/locator/locator.hpp>
|
||||
#include <entt/meta/container.hpp>
|
||||
#include <entt/meta/context.hpp>
|
||||
#include <entt/meta/factory.hpp>
|
||||
@@ -525,6 +525,16 @@ TEST_F(MetaType, Reset) {
|
||||
ASSERT_TRUE(entt::resolve("clazz"_hs));
|
||||
}
|
||||
|
||||
TEST_F(MetaType, ResetLast) {
|
||||
auto id = (entt::resolve().cend() - 1u)->second.id();
|
||||
|
||||
ASSERT_TRUE(entt::resolve(id));
|
||||
|
||||
entt::meta_reset(id);
|
||||
|
||||
ASSERT_FALSE(entt::resolve(id));
|
||||
}
|
||||
|
||||
TEST_F(MetaType, ResetAll) {
|
||||
using namespace entt::literals;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user