Actions
バグ #776
closedcoil/tests/OSのテスト実行時エラー
Start date:
07/09/2009
Due date:
% Done:
100%
Estimated time:
Description
Ubunt-8.10にてsrc/lib/coil/tests以下のテストを実行するとOSのテストの際に"Segmentation fault"で異常終了する。
具体的には、coil/include/OS.hのGetOpt::operator()()内のgetopt()呼び出しのところでエラーが発生している。
Ubunt-8.04ではエラーにはならない。
リビジョンは1435。
Updated by n-ando about 15 years ago
- % Done changed from 0 to 100
getopt(3)は引数の文字列配列の内容を変更するが、Ubuntu8.04とUbuntu8.10の間ではその処理方法が異なっている模様。
glibcのgetoptのソースを見る限りは、Ubuntu8.04とUbuntu8.10の間では根本的な違いはないことから、コンパイラのメモリの配置方法によるものではないかと推測される。
また、別の問題として、Ubuntu8.10のgetoptは、2回目以降の処理の問題があるように見受けられる。
getoptはグローバル変数を使用する仕様となっており、optindという変数を初期化することで、複数回の処理が実現できるようになっている。
しかしながら、これは、getoptの実装に強く依存するため、この方法自体POSIX汎用ではない。(FreeBSDではoptindに加えて、optresetという初期化フラグがグローバル変数として使用されている。)
以上の理由から、GetOptクラスをgetopt関数とは独立に実装することにする。
Actions