boostにバグ報告

してきました。
報告先>> ttps://svn.boost.org/trac/boost/ticket/5577

/Wall(すべての警告を表示)にしてあるのに、なぜか全然警告が出なかったことが発端。

なんでかというと#pragma warning(pop)と#pragma warning(push)という警告スタック命令の対応が取れておらず
(詳細はmsdnの ttp://msdn.microsoft.com/en-us/library/2c8f766e%28v=VS.100%29.aspx を参照)
pushしたのにpopしないままとなっているhppファイルをincludeして警告非表示設定がおかしくなったため。

atlやら散々疑って時間をつぶした後、ようやくboost内にpop漏れがあることに気づき
grepを駆使して対応が取れていないファイルを探しだし(具体的にはgrep warning | grep pragmaした結果を目視で仕分け)
明らかにバグであると確信してboostのtracを漁って同じ報告がないかを確認、警告に関するガイドラインをwikiに見つけたのでよく読み
popを足したり余計なpushを消したりしてパッチを作り、機械翻訳頼りで頑張って英文を書き、チケット発行して報告。
という、言葉にするとこれだけの作業で徹夜したのでした。

実は他にも#pragma warning(disable: XXXX)しているだけでpushもpopもしていないコードが大量にあったり
pragma warning発行条件が明らかにガイドラインに沿ってないコードもあったりしたわけですが
さすがにそこまで手を広げるととても終わらないし、スタックの整合性さえ取れていれば前後でpush/popすることで回避可能なのでスルー。

boostほどのキチガイ(いい意味でね)集団でも、所によってはクソコードが混じるものである。
ということを嫌というほど実感させられた一件でした。
もう二度と、boostだからとかそんな理由で妄信したりしないよ……