VC++6.0 fixes

Fixes for Library Bugs in VC++ V5.0/V6.0(P.J.Plauger大先生の会社の修正情報; http://www.dinkumware.com/vc_fixes.html)の、VC6.0 SP6での状況。

結果から言うと、とりあえず、
差し替え → deque、xstring、xtree
パッチ → list、vector、strftime.c
でよさそう。あとは好みで。

Windows CEについても調べてみたら、WinCE4.2とWinCE5.0の標準のSTLは、VC6.0のものとほぼ同じものになっていて、同じ不具合があるようだ。ただし、WinCEの場合、char_traitsがないので、xstringは差し替えられない。
STLPortなどに差し替えるか、パッチを当てるかする必要がありそう。

不具合内容は以下の通り。日付はVC6SP4のファイルのタイムスタンプ。

  • algorithm 1998/06/15
    • 不具合内容: _Buffered_mergeに致命的な不具合
    • 状況: 対処済(ifの前で_D1nと_D2nがクリアされている)
    • 更新の必要性: 無
  • deque 1998/06/15
    • 不具合内容: (C++標準で定められた範囲外ではあるが)要素の追加により末尾とend()が不一致になる可能性がある
    • 状況: 未対処
    • 更新の必要性: 弱(差し替えてもよさそう)
  • fstream 2000/08/29
    • 不具合内容: basic_filebufのパフォーマンスが悪い場合がある
    • 状況: 未対処
    • 更新の必要性: 弱(パッチを当ててもよさそう)
  • istream 1998/06/15
    • 不具合内容: デリミタの処理が不適切
    • 状況: 対処済
    • 更新の必要性: 無(パッチを当てても問題はない)
  • list 1998/06/15
    • 不具合内容: sort()に致命的な不具合
    • 状況: 未対処
    • 更新の必要性: 有(パッチを当てるべき)
  • memory 1998/06/15
    • 不具合内容: auto_ptrのコピーに不具合
    • 状況: 対処済(最後に_Y.release()を呼び出している)
    • 更新の必要性: 無
  • sstream 1998/06/15
    • 不具合内容: overflowのパフォーマンスが悪い場合がある
    • 状況: 未対処
    • 更新の必要性: 弱(パッチを当ててもよさそう)
  • string 1998/06/15
    • 不具合内容: デリミタの処理が不適切
    • 状況: 未対処
    • 更新の必要性: 弱(パッチを当ててもよさそう)
  • vector 1998/06/15
    • 不具合内容: insertに失敗する場合がある
    • 状況: 未対処
    • 更新の必要性: 有(パッチを当てるべき)
  • xmemory 1998/06/15
    • 不具合内容: コンパイルに失敗する場合がある
    • 状況: 未対処
    • 更新の必要性: 弱(パッチを当ててもよさそう)
  • xstring 1998/06/15
    • 不具合内容: 文字列の割り当てに問題がある可能性がある
    • 状況: 不明
    • 更新の必要性: 弱(差し替えてもよさそう)
  • xtree 2000/08/23
    • 不具合内容: スレッドロックの除去
    • 状況: 不明
    • 更新の必要性: 弱(差し替えてもよさそう)
  • strftime.c 2004/01/28
    • 不具合内容: time_putが%Xに未対応
    • 状況: 未対処
    • 更新の必要性: 弱(パッチを当ててもよさそう)