[#39021] CGI#[] on Ruby 1.8.1 — 堀川 久 <vzw00011@...>
明けましておめでとうございます。今年もよろしくです。
2 messages
2004/01/05
[#39026] Re: CGI#[] on Ruby — 堀川 久 <VZW00011@...>
おはようございます。
7 messages
2004/01/07
[#39031] ruby-mysqlのlist_dbs — Takashi Kanai <kanai@...4u.or.jp>
こんにちは、金井です。
5 messages
2004/01/08
[#39040] 内包オブジェクトがnilになったら自分もnilになるには? — Yac <yac@...>
岡といいます。こんにちは。
9 messages
2004/01/13
[#39051] — ruby@...
みなさん、こんにちは。みかみと申します。
7 messages
2004/01/19
[#39052] Re: compile error in ext/openssl
— GOTOU Yuuzou <gotoyuzo@...>
2004/01/19
In message <20040119074144.9461EAF55@mail.nmn.jp>,
[#39073] Ruby1.8のWIN32OLEで-wのとき — Takashi Kanai <kanai@...4u.or.jp>
金井です。
12 messages
2004/01/24
[#39074] Re: Ruby1.8のWIN32OLEで-wのとき
— Yac <yac@...>
2004/01/25
岡といいます。
[#39075] Re: Ruby1.8のWIN32OLEで-wのとき
— Takashi Kanai <kanai@...4u.or.jp>
2004/01/25
金井です。
[#39076] Re: Ruby1.8のWIN32OLEで-wのとき
— Yac <yac@...>
2004/01/25
岡です。
[#39077] Re: Ruby1.8のWIN32OLEで-wのとき
— Takashi Kanai <kanai@...4u.or.jp>
2004/01/25
金井です。
[#39078] Re: Ruby1.8のWIN32OLEで-wのとき
— "U.Nakamura" <usa@...>
2004/01/25
こんにちは、なかむら(う)です。
[ruby-list:39080] Re: Ruby1.8のWIN32OLEで-wのとき
From:
nobu.nakada@...
Date:
2004-01-26 00:05:07 UTC
List:
ruby-list #39080
なかだです。
At Mon, 26 Jan 2004 01:58:08 +0900,
Takashi Kanai wrote:
> 残る問題は、何でワーニングが出るか、です。
WIN32OLE::ARGVをクラス変数としてアクセスしているのが、そもそも
の間違いです。現在の実装では定数とクラス変数とクラスのインスタ
ンス変数の三つは同じところにあるので、たまたま見えているだけで
す。
Index: ext/win32ole/win32ole.c
===================================================================
RCS file: /cvs/ruby/src/ruby/ext/win32ole/win32ole.c,v
retrieving revision 1.16
diff -u -2 -p -d -r1.16 win32ole.c
--- ext/win32ole/win32ole.c 24 Sep 2003 22:55:33 -0000 1.16
+++ ext/win32ole/win32ole.c 26 Jan 2004 00:01:16 -0000
@@ -1687,4 +1687,20 @@ hash2named_arg(pair, pOp)
static VALUE
+set_argv(realargs, beg, end)
+ VARIANTARG* realargs;
+ unsigned int beg, end;
+{
+ VALUE argv = rb_const_get(cWIN32OLE, rb_intern("ARGV"));
+
+ Check_Type(argv, T_ARRAY);
+ rb_ary_clear(argv);
+ while (--end >= beg) {
+ rb_ary_push(argv, ole_variant2val(&realargs[end]));
+ VariantClear(&realargs[end]);
+ }
+ return argv;
+}
+
+static VALUE
ole_invoke(argc, argv, self, wFlags)
int argc;
@@ -1708,5 +1724,4 @@ ole_invoke(argc, argv, self, wFlags)
EXCEPINFO excepinfo;
VARIANT result;
- VALUE args;
VARIANTARG* realargs = NULL;
unsigned int argErr = 0;
@@ -1848,11 +1863,5 @@ ole_invoke(argc, argv, self, wFlags)
/* clear dispatch parameter */
if(op.dp.cArgs > cNamedArgs) {
- args = rb_cvar_get(cWIN32OLE, rb_intern("ARGV"));
- rb_funcall(args, rb_intern("clear"), 0);
- for(i = cNamedArgs; i < op.dp.cArgs; i++) {
- n = op.dp.cArgs - i + cNamedArgs - 1;
- rb_ary_push(args, ole_variant2val(&realargs[n]));
- VariantClear(&realargs[n]);
- }
+ set_argv(realargs, cNamedArgs, op.dp.cArgs);
}
else {
@@ -2067,10 +2076,5 @@ ole_invoke2(self, dispid, args, types, d
/* clear dispatch parameter */
if(dispParams.cArgs > 0) {
- VALUE argv = rb_cvar_get(cWIN32OLE, rb_intern("ARGV"));
- rb_funcall(argv, rb_intern("clear"), 0);
- for(i = dispParams.cArgs - 1; i >= 0; i--) {
- rb_ary_push(argv, ole_variant2val(&realargs[i]));
- VariantClear(&realargs[i]);
- }
+ set_argv(realargs, 0, dispParams.cArgs);
}
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦