OSDN Git Service

[Fix] update_lite_flags()の処理におけるダングリング参照
authorHabu <habu1010+github@gmail.com>
Wed, 1 Nov 2023 14:08:03 +0000 (23:08 +0900)
committerHabu <habu1010+github@gmail.com>
Wed, 1 Nov 2023 14:08:03 +0000 (23:08 +0900)
一時オブジェクトの、自身の参照を返すメソッドの戻り値を参照で受けている
ため、ダングリング参照になってしまっている。
値で受け取ってオブジェクトをコピーするように修正する。

src/monster/monster-update.cpp

index c2a83a7..e49e01e 100644 (file)
@@ -125,7 +125,7 @@ void update_lite_flags(turn_flags *turn_flags_ptr, MonsterRaceInfo *r_ptr)
 {
     using Mbt = MonsterBrightnessType;
     const auto has_lite = r_ptr->brightness_flags.has_any_of({ Mbt::HAS_LITE_1, Mbt::HAS_LITE_2 });
-    const auto &except_has_lite = EnumClassFlagGroup<Mbt>(self_ld_mask).set({ Mbt::HAS_DARK_1, Mbt::HAS_DARK_2 });
+    const auto except_has_lite = EnumClassFlagGroup<Mbt>(self_ld_mask).set({ Mbt::HAS_DARK_1, Mbt::HAS_DARK_2 });
     if (turn_flags_ptr->do_move && (r_ptr->brightness_flags.has_any_of(except_has_lite) || (has_lite && !AngbandSystem::get_instance().is_phase_out()))) {
         RedrawingFlagsUpdater::get_instance().set_flag(StatusRecalculatingFlag::MONSTER_LITE);
     }