[#26664] refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

22 messages 2005/08/01
[#26665] Re: refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/01

山本です。

[#26668] Re: refactoring tcltklib.c (deleted ip check) — Hidetoshi NAGAI <nagai@...> 2005/08/01

永井@知能.九工大です.

[#26678] Re: refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/01

山本です。

[#26684] Re: refactoring tcltklib.c (deleted ip check) — Hidetoshi NAGAI <nagai@...> 2005/08/01

永井@知能.九工大です.

[#26686] Re: refactoring tcltklib.c (deleted ip check) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/01

山本です。

[#26817] test/socket/test_tcp.rb freeze on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

12 messages 2005/08/18

[#26829] cannot check EOF of pipe on windows — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

19 messages 2005/08/19
[#26830] Re: cannot check EOF of pipe on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/19

山本です。

[#26831] Re: cannot check EOF of pipe on windows — "U.Nakamura" <usa@...> 2005/08/19

こんにちは、なかむら(う)です。

[#26832] Re: cannot check EOF of pipe on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/19

山本です。

[#26836] Re: cannot check EOF of pipe on windows — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/08/19

なかだです。

[#26872] irb -I/ruby -Iと$LOAD_PATH — akira yamada / やまだあきら <akira@...>

Debianユーザからruby -Iとirb -Iで

17 messages 2005/08/24
[#26873] Re: irb -I/ruby -Iと$LOAD_PATH — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/08/24

なかだです。

[#26875] Re: irb -I/ruby -Iと$LOAD_PATH — akira yamada / やまだあきら <akira@...> 2005/08/24

nobuyoshi nakada wrote:

[#26885] Re: irb -I/ruby -Iと$LOAD_PATH — keiju@... (石塚圭樹) 2005/08/26

けいじゅ@いしつかです.

[#26897] fail on make install — KIMURA Koichi <kimura.koichi@...>

木村です。

28 messages 2005/08/29
[#26898] Re: fail on make install — "U.Nakamura" <usa@...> 2005/08/29

こんにちは、なかむら(う)です。

[#26903] Re: fail on make install — KIMURA Koichi <kbk@...> 2005/08/29

木村です。

[#26922] Re: fail on make install — KIMURA Koichi <kimura.koichi@...> 2005/08/30

木村です。

[#26926] Re: fail on make install — KIMURA Koichi <kimura.koichi@...> 2005/08/31

木村です。

[#26927] Re: fail on make install — "U.Nakamura" <usa@...> 2005/08/31

こんにちは、なかむら(う)です。

[#26928] Re: fail on make install — KIMURA Koichi <kimura.koichi@...> 2005/08/31

木村です。

[#26929] Re: fail on make install — "U.Nakamura" <usa@...> 2005/08/31

こんにちは、なかむら(う)です。

[#26930] Re: fail on make install — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/08/31

なかだです。

[#26931] Re: fail on make install — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/08/31

山本です。

[#26933] Re: fail on make install — nobu@... 2005/08/31

なかだです。

[#26938] Re: fail on make install — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/09/01

なかだです。

[#26939] Re: fail on make install — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/09/01

山本です。

[#26900] multiplying empty string — nobuyoshi nakada <nobuyoshi.nakada@...>

19 messages 2005/08/29
[#26904] Re: multiplying empty string — Yukihiro Matsumoto <matz@...> 2005/08/29

まつもと ゆきひろです

[#26907] Re: multiplying empty string — Tanaka Akira <akr@...17n.org> 2005/08/29

In article <1125327516.070646.12845.nullmailer@x31.priv.netlab.jp>,

[#26909] Re: multiplying empty string — Yukihiro Matsumoto <matz@...> 2005/08/29

まつもと ゆきひろです

[ruby-dev:26917] rb_rescue2() doesn't work

From: Hidetoshi NAGAI <nagai@...>
Date: 2005-08-30 03:37:15 UTC
List: ruby-dev #26917
永井@知能.九工大です.

rb_rescue2() がうまく働いてくれなくて,
ちょっと「謎」な状況に困ってます.

今,次のような拡張ライブラリがあったとします.
---------------------------------------------------------------
#include "ruby.h"

VALUE
hoge_raise(self)
    VALUE self;
{
    fprintf(stderr, "call hoge_raise\n");
    rb_raise(rb_eArgError, "hoge raise");
    return Qnil; /* dummy */
}

VALUE
hoge_rescue(self)
    VALUE self;
{
    fprintf(stderr, "call hoge_rescue\n");
    return Qnil;
}

VALUE
hoge1(self)
    VALUE self;
{
    return rb_rescue(hoge_raise, self, 
                     hoge_rescue, self);
}

VALUE
hoge2(self)
    VALUE self;
{
    return rb_rescue2(hoge_raise, self, 
                      hoge_rescue, self, 
                      rb_eArgError, (VALUE)0);
}

VALUE
hoge3(self)
    VALUE self;
{
    return rb_rescue2(hoge_raise, self, 
                      hoge_rescue, self, 
                      rb_eStandardError, (VALUE)0);
}

VALUE
hoge4(self)
    VALUE self;
{
    VALUE e;

    e = rb_const_get(rb_cObject, rb_intern("ArgumentError"));
    fprintf(stderr, "%lx %lx\n", rb_eArgError, e);
    return rb_rescue2(hoge_raise, self, 
                      hoge_rescue, self, 
                      e, (VALUE)0);
}

void
Init_hoge()
{
    rb_define_method(rb_cObject, "hoge1", hoge1, 0);
    rb_define_method(rb_cObject, "hoge2", hoge2, 0);
    rb_define_method(rb_cObject, "hoge3", hoge3, 0);
    rb_define_method(rb_cObject, "hoge4", hoge4, 0);
}
---------------------------------------------------------------

この場合,hoge1 〜 hoge4 のいずれも hoge_raise と hoge_rescue とを
呼んで nil を返すはずだと思うのですが,そうなってくれません.
次のようになり,rb_rescue2() が例外を捉えていないようです.

---------------------------------------------------------------
% /usr/local/bin/irb
irb(main):001:0> require './hoge.so'
=> true
irb(main):002:0> hoge1
call hoge_raise
call hoge_rescue
=> nil
irb(main):003:0> hoge2
call hoge_raise
ArgumentError: hoge raise
        from (irb):3:in `hoge2'
        from (irb):3
        from :0
irb(main):004:0> hoge3
call hoge_raise
ArgumentError: hoge raise
        from (irb):4:in `hoge3'
        from (irb):4
        from :0
irb(main):005:0> hoge4
401e2404 401e2404
call hoge_raise
ArgumentError: hoge raise
        from (irb):5:in `hoge4'
        from (irb):5
        from :0
irb(main):006:0> 
---------------------------------------------------------------

eval.c での rb_rescue() の定義は

---------------------------------------------------------------
VALUE
rb_rescue(b_proc, data1, r_proc, data2)
    VALUE (*b_proc)(), (*r_proc)();
    VALUE data1, data2;
{
    return rb_rescue2(b_proc, data1, r_proc, data2, rb_eStandardError, (VALUE)0);
}
---------------------------------------------------------------

ですから,hoge1 は OK で hoge3 がダメというのもよくわかりません.
ruby -v の結果は "ruby 1.8.3 (2005-08-29) [i686-linux]" です.
いつからこのような状況になったのかはわかりませんが,
なにか心当たりはありますでしょうか?

もし私の手元だけでの異常となれば,それはそれで別の調査ができますので
よろしくお願いします.
-- 
                                       永井 秀利 (九工大 知能情報)
                                           nagai@ai.kyutech.ac.jp

In This Thread

Prev Next