[#29371] commit miss — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
7 messages
2006/09/01
[#29374] nil.to_s — Shugo Maeda <shugo@...>
前田です。
59 messages
2006/09/01
[#29375] Re: nil.to_s
— "U.Nakamura" <usa@...>
2006/09/01
こんにちは、なかむら(う)です。
[#29380] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/01
まつもと ゆきひろです
[#29387] Re: nil.to_s
— Shugo Maeda <shugo@...>
2006/09/01
前田です。
[#29390] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/01
まつもと ゆきひろです
[#29398] Re: nil.to_s
— "NARUSE, Yui" <naruse@...>
2006/09/01
成瀬です。
[#29400] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/01
まつもと ゆきひろです
[#29405] Re: nil.to_s
— "NARUSE, Yui" <naruse@...>
2006/09/02
成瀬です。
[#29520] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/07
まつもと ゆきひろです
[#29396] Re: nil.to_s
— "U.Nakamura" <usa@...>
2006/09/01
こんにちは、なかむら(う)です。
[#29409] Re: nil.to_s
— Yukihiro Matsumoto <matz@...>
2006/09/02
まつもと ゆきひろです
[#29376] Re: nil.to_s
— Shugo Maeda <shugo@...>
2006/09/01
前田です。
[#29406] too slow drb test — Tanaka Akira <akr@...>
とあるホスト (というのは td176.testdrive.hp.com ですが) で
5 messages
2006/09/02
[#29416] build failed on osx — Masatoshi SEKI <m_seki@...>
咳といいます。
8 messages
2006/09/02
[#29426] Re: build failed on osx
— Mitsuhiro Kondo <miche@...>
2006/09/03
近藤と申します。
[#29436] Re: build failed on osx
— Masatoshi SEKI <m_seki@...>
2006/09/03
咳といいます。
[#29423] Time#rfc2822 — Tadayoshi Funaba <tadf@...>
ふなばです。
9 messages
2006/09/03
[#29427] Re: Time#rfc2822
— Tanaka Akira <akr@...>
2006/09/03
In article <20060903.111434.71084310.tadf@dotrb.org>,
[#29429] Re: Time#rfc2822
— Tadayoshi Funaba <tadf@...>
2006/09/03
> Time が utc なら時差情報は出さないのが意図であると推測するの
[#29432] Re: Time#rfc2822
— Tanaka Akira <akr@...>
2006/09/03
In article <20060903.140151.74756121.tadf@dotrb.org>,
[#29447] Struct::Tms.instance_methods(false) contains false — Tanaka Akira <akr@...>
以下のように、instance_methods の結果に false が入ることがあります。
4 messages
2006/09/03
[#29473] ext/tk/tkutil — nobu@...
なかだです。
8 messages
2006/09/04
[#29474] Re: ext/tk/tkutil
— Yukihiro Matsumoto <matz@...>
2006/09/04
まつもと ゆきひろです
[#29491] symbol and string — Tanaka Akira <akr@...>
open-uri で :proxy=>nil という指定を行うと、以下のようにエラーになります。
33 messages
2006/09/05
[#29499] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/05
まつもと ゆきひろです
[#29500] Re: symbol and string
— Tanaka Akira <akr@...>
2006/09/05
In article <1157470154.047826.13379.nullmailer@x31.priv.netlab.jp>,
[#29503] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/06
まつもと ゆきひろです
[#29504] Re: symbol and string
— Tanaka Akira <akr@...>
2006/09/06
In article <1157505538.340126.8472.nullmailer@x31.priv.netlab.jp>,
[#29507] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/06
まつもと ゆきひろです
[#29512] Re: symbol and string
— keiju@... (石塚圭樹)
2006/09/06
けいじゅ@いしつかです.
[#29529] Re: symbol and string
— SASADA Koichi <ko1@...>
2006/09/08
ささだです。
[#29530] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/08
まつもと ゆきひろです
[#29532] Re: symbol and string
— Masatoshi SEKI <m_seki@...>
2006/09/08
咳といいます。
[#29533] Re: symbol and string
— Yukihiro Matsumoto <matz@...>
2006/09/08
まつもと ゆきひろです
[#29601] cgi.rbのformの挙動 — Fujioka <fuj@...>
藤岡です。
12 messages
2006/09/26
[#29602] Re: cgi.rbのformの挙動
— Yukihiro Matsumoto <matz@...>
2006/09/26
まつもと ゆきひろです
[#29603] Re: cgi.rbのformの挙動
— Fujioka <fuj@...>
2006/09/26
藤岡です。
[#29604] Re: cgi.rbのformの挙動
— "Nobuyoshi Nakada" <nobu@...>
2006/09/26
なかだです。
[ruby-dev:29431] Re: method_missing in Ruby 1.9.0
From:
nobu@...
Date:
2006-09-03 05:20:00 UTC
List:
ruby-dev #29431
なかだです。
At Sun, 3 Sep 2006 09:55:59 +0900,
Masaki Suketa wrote in [ruby-dev:29420]:
> 次のスクリプトが、ruby 1.9.0 (2006-09-03)で falseと出力されます。
> class Foo
> def method_missing(id, *arg)
> p id # => false
> end
> end
>
> foo = Foo.new
> foo.visible = true
たまたまfalse(== 0)になっただけで、実際には不定値ですね。
Index: gc.c
===================================================================
RCS file: /cvs/ruby/src/ruby/gc.c,v
retrieving revision 1.248
diff -p -U 2 -r1.248 gc.c
--- gc.c 2 Sep 2006 15:05:27 -0000 1.248
+++ gc.c 3 Sep 2006 01:12:58 -0000
@@ -1382,5 +1382,5 @@ garbage_collect(void)
#endif
rb_gc_mark_threads();
- rb_gc_mark_symbols();
+ rb_gc_mark_symbols(0);
/* mark protected global variables */
Index: intern.h
===================================================================
RCS file: /cvs/ruby/src/ruby/intern.h,v
retrieving revision 1.199
diff -p -U 2 -r1.199 intern.h
--- intern.h 31 Aug 2006 08:24:36 -0000 1.199
+++ intern.h 3 Sep 2006 01:12:33 -0000
@@ -259,4 +259,5 @@ int ruby_cleanup(int);
int ruby_exec(void);
void rb_gc_mark_threads(void);
+void rb_gc_mark_symbols(int);
void rb_thread_start_timer(void);
void rb_thread_stop_timer(void);
Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.456
diff -p -U 2 -r1.456 parse.y
--- parse.y 2 Sep 2006 15:05:27 -0000 1.456
+++ parse.y 3 Sep 2006 05:10:38 -0000
@@ -6030,5 +6030,4 @@ parser_yylex(struct parser_params *parse
}
if (c == '>') {
- enum lex_state_e state = lex_state;
lex_state = EXPR_ARG;
return tLAMBDA;
@@ -8379,4 +8378,13 @@ rb_symname_p(const char *name)
}
+static void
+register_symid(VALUE sym, ID id)
+{
+ RBASIC(sym)->klass = rb_cSymbol;
+ OBJ_FREEZE(sym);
+ st_add_direct(global_symbols.sym_id, (st_data_t)sym, id);
+ st_add_direct(global_symbols.id_sym, id, (st_data_t)sym);
+}
+
ID
rb_intern2(const char *name, long len)
@@ -8451,8 +8459,5 @@ rb_intern2(const char *name, long len)
id |= ++global_symbols.last_id << ID_SCOPE_SHIFT;
id_register:
- RBASIC(sym)->klass = rb_cSymbol;
- OBJ_FREEZE(sym);
- st_add_direct(global_symbols.sym_id, (st_data_t)sym, id);
- st_add_direct(global_symbols.id_sym, id, (st_data_t)sym);
+ register_symid(sym, id);
return id;
}
@@ -8467,12 +8472,25 @@ VALUE
rb_id2sym(ID id)
{
- VALUE data;
+ VALUE sym;
+ st_data_t data;
if (st_lookup(global_symbols.id_sym, id, &data)) {
- if (!RBASIC(data)->klass) {
- RBASIC(data)->klass = rb_cSymbol;
+ sym = (VALUE)data;
+ if (!RBASIC(sym)->klass) {
+ RBASIC(sym)->klass = rb_cSymbol;
}
- return data;
}
+ else {
+ if (!is_attrset_id(id)) return Qnil;
+ id &= ~ID_SCOPE_MASK;
+ if (!st_lookup(global_symbols.id_sym, (id | ID_LOCAL), &data) &&
+ !st_lookup(global_symbols.id_sym, (id | ID_CONST), &data)) {
+ return Qnil;
+ }
+ sym = rb_str_dup((VALUE)data);
+ rb_str_cat(sym, "=", 1);
+ register_symid(sym, (id | ID_ATTRSET));
+ }
+ return sym;
}
@@ -8490,6 +8508,5 @@ const char *
rb_id2name(ID id)
{
- const char *name;
- st_data_t data;
+ VALUE sym;
if (id < tLAST_TOKEN) {
@@ -8502,24 +8519,7 @@ rb_id2name(ID id)
}
- if (st_lookup(global_symbols.id_sym, id, &data))
- return RSTRING_PTR(data);
-
- if (is_attrset_id(id)) {
- ID id2 = (id & ~ID_SCOPE_MASK) | ID_LOCAL;
-
- again:
- name = rb_id2name(id2);
- if (name) {
- char *buf = ALLOCA_N(char, strlen(name)+2);
-
- strcpy(buf, name);
- strcat(buf, "=");
- rb_intern(buf);
- return rb_id2name(id);
- }
- if (is_local_id(id2)) {
- id2 = (id & ~ID_SCOPE_MASK) | ID_CONST;
- goto again;
- }
+ sym = rb_id2sym(id);
+ if (!NIL_P(sym)) {
+ return RSTRING_PTR(sym);
}
return 0;
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦