[Squeak-ja: 3713] Re: SuperSwiki のプロジェクトを SuperSwiki2 に取り込みました

Kazuhiro ABE abee @ squeakland.jp
2007年 10月 23日 (火) 22:26:55 JST


阿部@新百合です。

On Mon, 22 Oct 2007 22:26:31 +0900
Koji Yokokawa <ykoubo2007 @ yengawa.com> wrote:
>Squeakland2005J2で「移行の案内」プロジェクトを読んで移行ボタンを押したら
>エラーになりました。
>とりあえずエラーログを送ります。

レポートありがとうございます。
修正版をアップしましたのでご確認ください。

以下は反省の弁です。

今回のエラーは、プリファレンス用ディレクトリ(prefs)の存在を保証してくれる
メソッド、ExternalSettings>>assuredPreferenceDirectoryが、サンドボックス
(FileDirectory default)以外へのアクセスが制限されているときに(ネットワー
ク経由でプロジェクトを開いた後)、正常に動作しなくなることが原因でした。

prefsはサンドボックス内に作られるので大丈夫だろうと思っていたのですが、上
記のメソッドから呼ばれているFileDirectory>>assureExistenceOfPath:が再帰的
にパス中のディレクトリの存在を確認する際、FileDirectory defalut以上のディ
レクトリに対してdirectoryExists:を送っても常にfalseを返すことから、結果と
してログにあるエラーを起こしていました。

このエラーを見つけられなかったのは、テストの途中でSqueakletsにプロジェク
トのキャッシュが作られ、こちらを読み込んでいたために制限モードに移行して
いなかったからでした(もし横川さんがSqueakを立ち上げなおして、同じプロジェ
クトを開き、再度ボタンを押していればエラーにならなかったはずです。これは
セキュリティホールの可能性があります)。

現在はassuredPreferenceDirectoryの使用を取りやめ、FileDirectory defaultの
存在を前提として、prefs以下を作成するように変更しています。

 //abee
--
阿部 和広  EMAIL abee @ squeakland.jp



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