Content-Length: 216220 | pFad | http://b.hatena.ne.jp/AmaiSaeta/programming/bug/

[B! programming][bug] AmaiSaetaのブックマーク

タグ

programmingとbugに関するAmaiSaetaのブックマーク (3)

  • VC8のfilebufとsetlocale - かそくそうち

    今日はライブラリの作業を進める気分ではなかったので、前々から気になっていた、VC8のstd::filebufがstd::setlocale()を呼ばないと動かない問題と、std::setlocale()を呼ぶと標準出力/エラー出力がおかしくなる問題について調べてみました。 原因に関してはこんな感じでした。 std::filebufのファイル名がCのロケールに従ってワイド文字に変換される ↓ Cのロケールを変更するためにstd::setlocale()を呼ぶことになる ↓ Cのロケールが"C"以外になると、ファイルポインタへの書き込みで、ワイド文字経由でコンソールのコードページへの変換が発生する ↓ 既定ではstdoutやstderrがバッファリングなしの設定なので、マルチバイト文字のリーディングバイトだけでワイド文字に変換しようとして失敗する ↓ 書き込みに失敗したため、std::file

    VC8のfilebufとsetlocale - かそくそうち
  • 今度は「3000年問題」、Visual C++に - @IT

    2007/02/14 マイクロソフトの「Visual C++」で、西暦3000年1月1日以降の日付処理に不具合が生じるという3000年問題(Y3K)が指摘された。 NIST(米国標準技術局)が2月13日に公開したアラートによると、64ビット版Visual C++ 8.0スタンダードライブラリ(MSVCR80.DLL)で3000年1月1日以降の時間引数を処理する際にアサーションエラーが発生する。攻撃者にこれを悪用されると、大きな時間の値を使ってDoS状態が誘発され、アプリケーションが終了してしまう可能性がある。 2000年のY2K問題を彷彿とさせるこの不具合についてSANS Internet Storm Centerでは、日付に任意の制限を設けるのは良くないという、もう10年近くも前に業界が学んだ教訓が生かされていないと指摘している。

    AmaiSaeta
    AmaiSaeta 2007/02/16
    何年後だよwwとか思ったが、良く考えたらユーザからの入力をチェックする必要があるということか。 | つか、他の奴(他ライブラリ、他言語含む)はどうなんだろう。
  • C++ Labyrinth

    VC6 の関数テンプレートのバグにハマる またしても VC++ 6 のワナにハメられてしまった。 今回は、次のような関数テンプレートを定義し、 template<int N> void foo() { cout 次のような呼び出しを行った。 foo&lt1>(); foo&lt2>(); 当然、"1" と "2" が表示されることを期待したわけだが、結果は何と両方とも "2"。 どうやら VC6 では、 テンプレート引数だけを変えて関数テンプレートのインスタンスを複数作ることができないらしい。 こんな中途半端なことをされるくらいなら、いっそコンパイルエラーになって欲しかった。 そのほうがすぐに別のやり方に書き直せるし、不可解なバグに悩まずにすむ。 ちなみに、上の問題を回避するには、ファンクタ (関数オブジェクト) を使うのが常套手段。 template<int N> class Func

  • 1








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://b.hatena.ne.jp/AmaiSaeta/programming/bug/

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy