[Gauche-devel-jp] Re: string-concatenateとmime-retrieve-bodyの制限緩和について

アーカイブの一覧に戻る

Shiro Kawai shiro****@lava*****
2004年 1月 24日 (土) 13:11:08 JST


From: Tatsuya BIZENN <bizen****@arthu*****>
Subject: [Gauche-devel-jp] string-concatenateとmime-retrieve-bodyの制限緩和について
Date: Fri, 23 Jan 2004 17:52:13 +0900

> rfc.mimeを使って添付ファイルを処理するフィルタを作成中、
> ある程度以上大きなMIMEパートをmime-retrieve-bodyで処理
> しようとすると、
> 
> *** ERROR: too many arguments (42626) to apply
> 
> といわれて落ちることに気がつきました。原因になっているのは
> string-concatenateの実装なのですが、以下の方がいいのでは
> ないかと考えます。

手抜きが露見してしまいました。
実際、srfi-13のstring-concatenateの項には

   Note that the (apply string-append string-list)  idiom is
   not robust for long lists of strings, as some Scheme
   implementations limit the number of arguments that may be
   passed to an n-ary procedure.

という註記があるくらいなんで、applyを使わずに実装するのが筋です。
というわけでパッチ頂きます。

> また、mime-retrieve-body内のread-base64はbase64なパート全体を
> いったん文字列のリストにした後つないでいるので、ややもったい
> ない気がします。

こっちも手抜きです。直しておきます。
全てオンメモリにするかどうかは、現在の計算機状況ではあまり
問題にはならなくなりつつありますが、"Right Thing"を
通そうと思うならサイズを見て処理を切替えるべきでしょうね。
でも "Gauche" なんでそちらは必要性に迫られた時 or 手が空いた時
まで置いときます。

--shiro




Gauche-devel-jp メーリングリストの案内
アーカイブの一覧に戻る