Article freyasx/60 of [1-99] on the server localhost:7119
  upper oldest olders older1 this newer1 newers latest
search
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
[Reference:<_A58@freyasx.ML_>]
Newsgroups: mail-lists.freyasx

[FreyaSX] Re: fsearch.cgi 実行時 Segmentation fault
07 Oct 2005 09:36:56 GMT ysato@delegate.org (Yutaka Sato)
The DeleGate Project

On 09/28/05(09:38) you ysato@delegate (Yutaka Sato) wrote
in <_A58@freyasx.ML_>
 |そういえば、Gcc3 からは strstream が無くなった?ので、stringstream に
 |置き換えたのですが、Gcc2.9 はその移行期で、実装が不安定だったようです。
 |実際、オリジナルFreya (Gcc2) から FreyaSX (Gcc3) への移植は MacOSX 上の
 |Gcc3 で行ったのですが、移植後の版を RedHat7.1 の Gcc2.96-81 で試したら
 |動作せず、適当に回避した記憶があります。
 |String.cc の 94 行目にある、
 |  if(sout.tellp() <= 0){ // stringstream seems be implemented incompletely
 |というのがそれです。stringstream の tellp() がちゃんと実装されているか
 |どうかで、stringstream の実装状態を占うものですが、その後の2.96の過程で、
 |tellp() が治ったけれどget() がまだおかしい、と言う段階があるのかも知れ
 |ません。ですので、この行を、
 |  if(1){
 |のように置き換えれば、問題を回避できるかも知れません。

これで効果があったかどうかわからないのですが、ともかく、0.99.12 では

[String.cc]
#ifdef __GNUC__ && __GNUC__ < 3
#define NOSTRINGSTREAM 1
#else
...

のように Gcc3 以前を判定して、stringstream の get() を使わないように
しました。

                   D G  
┌─┐┬┌──┬┐ //\^^ ( - ); {Do the more with the less -- B. Fuller}
├─┤│└─┐│ / 877m\_<   >_ <URL:http://www.delegate.org/delegate/>
┴ └┴──┘┴──────────────────────────────
佐藤豊@情報技術研究部門.産業技術総合研究所(独立行政法人)

  admin search upper oldest olders older1 this newer1 newers latest
[Top/Up] [oldest] - [Older+chunk] - [Newer+chunk] - [newest + Check]
@_@V