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