Source of Nothingness - xyzzy : miyamukoさんとこの件

* xyzzy : miyamukoさんとこの件

xyzzy で戻り値が double, float の C 関数を呼ぶとクラッシュする(70509/p1)というお話。
原因はdll.ccの247と250でしょうね。おそらくfn→proc。fnをキャストするのは明らかにおかしい。

dll.ccを眺めたのは初めてだったけれど、かなりのBynary Hacksな感じ。亀井さんスゲー!!!

--- dll.cc~	Sun Feb 25 08:58:21 2001
+++ dll.cc	Fri May 11 04:34:41 2007
@@ -244,10 +244,10 @@
       return make_integer (long_to_large_int (u_long (proc ())));
 
     case CTYPE_FLOAT:
-      return make_single_float (((float (__stdcall *)())fn)());
+      return make_single_float (((float (__stdcall *)())proc)());
 
     case CTYPE_DOUBLE:
-      return make_double_float (((double (__stdcall *)())fn)());
+      return make_double_float (((double (__stdcall *)())proc)());
     }
 #else
 # error "yet"

miyamukoさんだったら手元では直してらっしゃるんだろうな。亀井さんには連絡済みなんだろうか?

start-timerの件も[[patch/21:patch%2F21]]の内容で大丈夫だと思うのだけど、連絡済みなのだろうか?

xyzzy MLに流してくれないと、この辺りの情報が回ってこなくて不便だよな〜と思う。

update : 2007-05-11 (Fri) 04:53:19