[Squeak-ja: 4281] Re: swiki1.5でa Primitive Has failed

"土本 (Florian) 強 "土本 (Florian) 強
2009年 7月 9日 (木) 21:37:38 JST


 土本です。
 ちょっと時間を使って追いかけてみました。

メール「[Squeak-ja: 4280] Re: swiki1.5でa  Primitive Has failed」(2009/07/09 09:09) に於いて
「Yoshiki Ohshima」 語りて曰く、

Yoshiki> > String class(Behavior)>>basicNew:
Yoshiki> > String class(Behavior)>>new;
Yoshiki> > String(SequenceableCollection)>>copyFrom:to:
Yoshiki> > XmlSwikiStorage>>loadPage:from:startingAt:
Yoshiki> > 
Yoshiki> >  辺りからのエラーのようです。basicNew(<primitive: 71>)が正常に動かない
Yoshiki> > 状況というとオブジェクトメモリが不足しているのでしょうか?
Yoshiki> 
Yoshiki>   プラットフォームによってはそうかもしれませんが、new: (new;ではないで
Yoshiki> すよね)でのエラーの場合、インデックスの計算が間違っていて負の数がnew:
Yoshiki> に渡っているということもありますね。やはり実際のデータと渡っている引数
Yoshiki> の値を見てみるのが良いのではないでしょうか。

 具体的には、String>>copyFrom:to:する際にコピー先サイズがマイナスになっ
ているためにprimitive:71に失敗しているようです。なぜこんな変な値になって
いるかというと、

---
	t4 := t2 findString: '<version date="' startingAt: t3.
	t5 := t2 findString: '" time="' staringAt: t4.
---

 として見ているため、「<version date="」も「" time="」もないページ(ファ
イルが壊れているとか)でおかしな値になっているようです。
 とりあえず、

	swiki/<wiki名>/pages/*.xml

 で、明らかに壊れているページのデータを補完してやることで解決しました。
 なんというか……、Swikiは便利なんですがエラー処理甘いですね。

 では。

!
土本(Florian)強 mailto: '<florian @ seagreen.ocn.ne.jp>'
                blog:  'http://d.hatena.ne.jp/Florian/'
                webto:   'http://florianswiki.dyndns.org/Web/'
openInWorld. "do it."
!



Squeak-ja メーリングリストの案内