ケアレスミス
どうしても直せない不具合があった。ifの条件が真ではないことが明らかなのに真とみなされてしまう。かなり頭を抱えたが、よくよくソースを見たらなんてことはない(以下は適当な再現コード)。
bool ret = true; if (!ret); // ← ここに謎のセミコロンがある { }
なんだよこのセミコロンw if文の意味ねー…orz 結局数時間悩んだ問題はセミコロンを一つ削除することで対処できた。
ちなみにこれ、別ラインの同じソースでも同じ原因で同じように悩んで同じように修正してるはずなんだよね。その場でこちらのソースも修正すれば良かった。過去の俺もっと頑張れよ(無茶振り)。