[#28230] bcc32 memory manager — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

15 messages 2006/01/18

[#28243] FUNCTION_CALL_MAY_RETURN_TWICE — Hajimu UMEMOTO <ume@...>

梅本です。

18 messages 2006/01/20

[#28270] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

17 messages 2006/01/23
[#28271] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/01/23

山本です。

[#28272] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — WATANABE Hirofumi <eban@...> 2006/01/23

わたなべです。

[#28273] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/01/23

山本です。

[#28274] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/01/24

山本です。

[#28275] Re: [PATCH] solaris 10 isinf and ruby_setenv fixes — "U.Nakamura" <usa@...> 2006/01/24

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

[#28286] SEGV with zlib — Tanaka Akira <akr@...17n.org>

最近、Data オブジェクトの free 関数が気になっているのですが、

24 messages 2006/01/30
[#28303] Re: SEGV with zlib — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/02/06

山本です。

[#28304] Re: SEGV with zlib — Yukihiro Matsumoto <matz@...> 2006/02/06

まつもと ゆきひろです

[#28305] Re: SEGV with zlib — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/02/06

山本です。

[#28306] Re: SEGV with zlib — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2006/02/06

山本です。

[#28307] Re: SEGV with zlib — Tietew <tietew-ml-ruby-dev@...> 2006/02/06

[#28308] Re: SEGV with zlib — Yukihiro Matsumoto <matz@...> 2006/02/06

まつもとゆきひろです。

[ruby-dev:28265] Re: FUNCTION_CALL_MAY_RETURN_TWICE

From: Tanaka Akira <akr@...17n.org>
Date: 2006-01-21 20:38:09 UTC
List: ruby-dev #28265
In article <87zmlph0xx.fsf@m17n.org>,
  Tanaka Akira <akr@m17n.org> writes:

> というわけで、carry flag が 1 になっているのがなぜか、という
> 話なんですが、さて?

そっか、carry flag が 1 なのは、getcontext で保存する時に 1
だったからですね。

http://www.freebsd.org/cgi/query-pr.cgi?pr=92110 に送ってお
きました。

それはそれとして、getcontext の前で 0 にしておけばごまかせる
わけで、次のようにしてみるとどうでしょう?

Index: eval.c
===================================================================
RCS file: /src/ruby/eval.c,v
retrieving revision 1.871
diff -u -p -r1.871 eval.c
--- eval.c	18 Jan 2006 15:00:58 -0000	1.871
+++ eval.c	21 Jan 2006 20:28:42 -0000
@@ -171,9 +171,11 @@ int function_call_may_return_twice_false
 #define FUNCTION_CALL_MAY_RETURN_TWICE 0
 #endif
 #define ruby_longjmp(env, val) rb_jump_context(env, val)
+static volatile int freebsd_clear_carry_flag = 0;
 #define ruby_setjmp(just_before_setjmp, j) ((j)->status = 0, \
     (just_before_setjmp), \
     FUNCTION_CALL_MAY_RETURN_TWICE, \
+    freebsd_clear_carry_flag = freebsd_clear_carry_flag + freebsd_clear_carry_flag, \
     getcontext(&(j)->context), \
     FUNCTION_CALL_MAY_RETURN_TWICE, \
     (j)->status)

FUNCTION_CALL_MAY_RETURN_TWICE を getcontext の前で呼ぶと直
るのは、(0 ? setjmp() : 0) の真偽判定で carry flag が 0 にな
るから、ですかね。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread