Ming/Rubyのパッチ

SWFActionでActionScriptにエラーがあると死にます。あとで投げる。

--- mingc.c.orig	2008-09-27 04:47:10.000000000 +0900
+++ mingc.c	2008-10-06 09:21:59.000000000 +0900
@@ -63,11 +63,21 @@ rb_Ming_use_SWF_version(self, version)
 
 void rb_Ming_raise(const char *msg, ...)
 {
+/*
   va_list args;
 
   va_start(args, msg);
   rb_raise(rb_eMingError, msg, args);
   va_end(args);
+*/
+  va_list args;
+  char buf[BUFSIZ];
+
+  va_start(args, msg);
+  vsnprintf(buf, BUFSIZ, msg, args);
+  va_end(args);
+
+  rb_exc_raise(rb_exc_new2(rb_eMingError, buf));
 }
 
 void hook_init_func()

va_listをそのまま、他の可変長引数に渡してるんだけど、これってうまくいくことあるのかな?
って、vsnprintfは動いてる。間違えたかな…
いやいやいや、vsnprintfの引数はva_listだ。

あ、BUFSIZの使い方に誤用が。

追記

「rb_raise(rb_eMingError, buf);」でもいいような…。なんでこう書いたんだっけ?