[#31320] Import RubyGems to Ruby 1.9 — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
なかだです。
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
In article <E1Ika5D-0007fc-GG@x31>,
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
In message <471447D5.5050902@sarion.co.jp>
咳といいます。
Rubygems は、基本的に他のパッケージシステムから包みやすい作り
In message <868x62huhe.knu@iDaemons.org>
At Wed, 17 Oct 2007 22:04:23 +0900,
Tuesday 16 October 2007 14:09:13 に NAKAMURA, Hiroshi さんは書きました:
-----BEGIN PGP SIGNED MESSAGE-----
押田です。
Sunday 21 October 2007 00:17:43 に NAKAMURA, Hiroshi さんは書きました:
> ちなみに「ruby/1.9.1の標準添付からどのライブラリを外すか?」という議論も
-----BEGIN PGP SIGNED MESSAGE-----
-----BEGIN PGP SIGNED MESSAGE-----
ささだです。
-----BEGIN PGP SIGNED MESSAGE-----
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
> U parsearg, tadf
まつもと ゆきひろです
-----BEGIN PGP SIGNED MESSAGE-----
[#31323] Bignum#to_s の Karatsuba 基数変換による高速化 — "Kenta Murata" <muraken@...>
むらけんです.
まつもと ゆきひろです
むらけんです.
まつもと ゆきひろです
遠藤です。
むらたです.
遠藤です。
むらたです.
[#31333] Invalid error message by illegal regexp — KIMURA Koichi <kimura.koichi@...>
木村です。
[#31351] set_trace_func NULL pointer given — eklerni <eklerni@...>
From:eklerni
[#31357] invalid string for Date.parse — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
> となります。どうも、junではじまっているので6月とみなしている
なかだです。
[#31371] simultaneous exceptions dump core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
ささだです。
遠藤です。
[#31376] Re: [ ruby-Bugs-9490 ] Date module, step method, infinite loop if +step+ is 0 should raise an exception? — Urabe Shyouhei <shyouhei@...>
rubyforgeで表題の件が卜部にassignされてるのですが、どうしましょう。
Date のほうで、合せたらいいというのなら、それでいいと思います。
[#31377] Re: [ ruby-Patches-11719 ] add a :passive option to open-uri's open method — Urabe Shyouhei <shyouhei@...>
rubyforgeで表題の件が卜部にassignされてるのですが、どうしましょう。
In article <46BE0E9B.70309@ruby-lang.org>,
[#31397] File exists - /tmp/bootstraptest.tmpwd — Tanaka Akira <akr@...>
ひとつのマシンで、あるユーザが btest した後、他のユーザが
ささだです。
In article <46C18A65.7030209@atdot.net>,
[#31407] [BUG] Stack consistency error (sp: 11, bp: 12) — Tanaka Akira <akr@...>
以下のようにすると Stack consistency error になります。
[#31448] Ruby's (new) Bizarre Operator(s) — Nobuyoshi Nakada <nobu@...>
なかだです。
まつもと ゆきひろです
バンサンです。
[#31462] Dir.mktmpdir for 1.8 — Tanaka Akira <akr@...>
Dir.mktmpdir を 1.8 に入れたいんですが、どうでしょう?
まつもと ゆきひろです
In article <E1IMCUq-00083X-Uo@x31>,
[#31470] nested fiber invocation — Yukihiro Matsumoto <matz@...>
まつもと ゆきひろです
[#31473] setter of $! — SASADA Koichi <ko1@...>
ささだです。
[#31475] lambda {|(v0,v1),v2|}.call([1],2) — Tanaka Akira <akr@...>
以下の例は ArgumentError になりません。
ささだです。
[#31502] {|(a,a)|} — Tanaka Akira <akr@...>
以下がエラーになりません。
[#31522] a, a = 1, 2 — Tanaka Akira <akr@...>
ふと気がついたんですが、a, a = 1, 2 とすると、1.8 と 1.9 で
こんにちは、なかむら(う)です。
[#31525] いくつかのバグ報告と提案(5点) — eklerni <eklerni@...>
From:eklerni
なかだです。
まつもと ゆきひろです
[#31539] strtod の精度 — Satoshi Nakagawa <snakagawa@...>
中川といいます。
まつもと ゆきひろです
中川です。
中川です。
まつもと ゆきひろです
中川です。
中川です。
まつもと ゆきひろです
In article <EEC70971-AED4-4830-801B-A507561AEDCD@infoteria.co.jp>,
[#31576] test/win32ole — SASADA Koichi <ko1@...>
ささだです.
[#31583] Fiber reviesed — SASADA Koichi <ko1@...>
ささだです.
遠藤です。
ささだです.
遠藤です。
ささだです.
[#31625] IO.sysdup2, IO.sysdup, IO.sysclose — Tanaka Akira <akr@...>
redirect の処理をちょっと書いてみたところ、
まつもと ゆきひろです
In article <E1IOaVr-0001Yu-4H@x31>,
In article <87d4xc97ml.fsf@fsij.org>,
[#31646] Re: [ruby-cvs:20498] Ruby:r13261 (trunk): * encoding.c: provide basic features for M17N. — Tanaka Akira <akr@...>
In article <200708250329.l7P3TjNP004245@ci.ruby-lang.org>,
まつもと ゆきひろです
[#31651] rb_enc_mbclen — Tanaka Akira <akr@...>
rb_enc_mbclen のインターフェースは GB18030 などで困るんじゃ
[ruby-dev:31372] jump in rescue clause in eval dumps core
遠藤と申します。
1.9 で後置 rescue 節の中で break や next や redo をするコードを
eval すると落ちます。
$ ./ruby -ve 'eval "0 rescue break"'
ruby 1.9.0 (2007-08-10 patchlevel 0) [i686-linux]
-e:1: -- control frame ----------
c:0004 p:---- s:0009 b:0009 l:000008 d:000008 CFUNC :eval
c:0003 p:0009 s:0005 b:0005 l:000004 d:000004 TOP -e:1
c:0002 p:---- s:0003 b:0003 l:000002 d:000002 FINISH :inherited
c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------
---------------------------
DBG> : "-e:1:in `<main>'"
-- backtrace of native function call (Use addr2line) --
0x80dac55
0x80f4093
0x80f415b
0x80b2250
0xffffe420
0x8104206
0x810b14c
0x80cf0f2
0x81028ae
0x81051fd
0x810b11e
0x80cf0f2
0x80cf6c7
0x80cf7f8
0x805b69d
0x805bb15
0x80d156e
0x80d3269
0x80d5de5
0x80d9554
0x80d988b
0x8059229
0x805d79d
0x8056df2
0xb7d6dea8
0x8056d21
-------------------------------------------------------
[BUG] Segmentation fault
ruby 1.9.0 (2007-08-10) [i686-linux]
アボートしました (core dumped)
$ ./ruby -ve 'eval "0 rescue next"'
ruby 1.9.0 (2007-08-10 patchlevel 0) [i686-linux]
-e:1: -- control frame ----------
c:0004 p:---- s:0009 b:0009 l:000008 d:000008 CFUNC :eval
c:0003 p:0009 s:0005 b:0005 l:000004 d:000004 TOP -e:1
c:0002 p:---- s:0003 b:0003 l:000002 d:000002 FINISH :inherited
c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------
---------------------------
DBG> : "-e:1:in `<main>'"
-- backtrace of native function call (Use addr2line) --
0x80dac55
(snip)
0x8056d21
-------------------------------------------------------
[BUG] Segmentation fault
ruby 1.9.0 (2007-08-10) [i686-linux]
アボートしました (core dumped)
$ ./ruby -ve 'eval "0 rescue redo"'
ruby 1.9.0 (2007-08-10 patchlevel 0) [i686-linux]
-e:1: -- control frame ----------
c:0004 p:---- s:0009 b:0009 l:000008 d:000008 CFUNC :eval
c:0003 p:0009 s:0005 b:0005 l:000004 d:000004 TOP -e:1
c:0002 p:---- s:0003 b:0003 l:000002 d:000002 FINISH :inherited
c:0001 p:---- s:0001 b:-001 l:000000 d:000000 ------
---------------------------
DBG> : "-e:1:in `<main>'"
-- backtrace of native function call (Use addr2line) --
0x80dac55
(snip)
0x8056d21
-------------------------------------------------------
[BUG] Segmentation fault
ruby 1.9.0 (2007-08-10) [i686-linux]
アボートしました (core dumped)
NODE_BREAK や NODE_NEXT や NODE_REDO のコンパイルで parent_iseq を
たどるとき、iseq が ISEQ_TYPE_EVAL かどうかのチェックがなかったり、
COMPILE_ERROR が while の中にあるせいで while 直後の余計なコードが
実行されていたりするためのようです。
# 今後後者のようなミスを防ぐために、COMPILE_ERROR マクロの break を
# goto に変えておくのも手かも?
Index: compile.c
===================================================================
--- compile.c (revision 12914)
+++ compile.c (working copy)
@@ -2903,9 +2903,14 @@
}
else {
rb_iseq_t *ip = iseq->parent_iseq;
+ int error_type_eval = 0;
while (ip) {
level++;
- if (ip->compile_data->redo_label != 0) {
+ if (ip->type == ISEQ_TYPE_EVAL) {
+ error_type_eval = 1;
+ break;
+ }
+ else if (ip->compile_data->redo_label != 0) {
level = 0x8000;
if (ip->compile_data->loopval_popped == 0) {
/* need value */
@@ -2919,7 +2924,12 @@
}
ip = ip->parent_iseq;
}
- COMPILE_ERROR((ERROR_ARGS "Illegal break"));
+ if (error_type_eval) {
+ COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with break"));
+ }
+ else {
+ COMPILE_ERROR((ERROR_ARGS "Illegal break"));
+ }
}
break;
}
@@ -2942,18 +2952,26 @@
}
else {
rb_iseq_t *ip = iseq->parent_iseq;
+ int error_type_eval = 0;
while (ip) {
level = 0x8000;
if (ip->type == ISEQ_TYPE_BLOCK) {
level |= 0x4000;
break;
}
+ else if (ip->type == ISEQ_TYPE_EVAL) {
+ error_type_eval = 1;
+ break;
+ }
else if (ip->compile_data->redo_label != 0) {
break;
}
ip = ip->parent_iseq;
}
- if (ip != 0) {
+ if (error_type_eval) {
+ COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with next"));
+ }
+ else if (ip != 0) {
COMPILE(ret, "next val", node->nd_stts);
add_ensure_iseq(ret, iseq);
ADD_INSN1(ret, nd_line(node), throw,
@@ -2987,19 +3005,24 @@
else {
rb_iseq_t *ip = iseq->parent_iseq;
unsigned long level = 0x8000 | 0x4000;
+ int error_type_eval = 0;
while (ip) {
if (ip->type == ISEQ_TYPE_BLOCK) {
break;
}
else if (ip->type == ISEQ_TYPE_EVAL) {
- COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with redo"));
+ error_type_eval = 1;
+ break;
}
else if (ip->compile_data->redo_label != 0) {
break;
}
ip = ip->parent_iseq;
}
- if (ip != 0) {
+ if (error_type_eval) {
+ COMPILE_ERROR((ERROR_ARGS "Can't escape from eval with redo"));
+ }
+ else if (ip != 0) {
add_ensure_iseq(ret, iseq);
ADD_INSN1(ret, nd_line(node), throw,
INT2FIX(level | 0x05) /* TAG_REDO */ );
--
Yusuke ENDOH <mame@tsg.ne.jp>