From: Katsuyuki Komatsu Date: 2000-10-11T22:25:42+09:00 Subject: [ruby-dev:11170] Thread.inspect 小松です. ruby 1.6.2 (2000-10-11)で, ruby -e 'p Thread.new {}' を実行すると出力にゴミがつきます. 同様なパターン /sprintf\(RSTRING.*%lx/ を検索してみると, object.cも修正が必要なようです. diff -ru1p ruby-1.6.2.dist/eval.c ruby-1.6.2/eval.c --- ruby-1.6.2.dist/eval.c Wed Oct 11 15:29:06 2000 +++ ruby-1.6.2/eval.c Wed Oct 11 22:15:47 2000 @@ -8183,2 +8183,3 @@ rb_thread_inspect(thread) sprintf(RSTRING(str)->ptr, "#<%s:0x%lx %s>", cname, thread, status); + RSTRING(str)->len = strlen(RSTRING(str)->ptr); OBJ_INFECT(str, thread); diff -ru1p ruby-1.6.2.dist/object.c ruby-1.6.2/object.c --- ruby-1.6.2.dist/object.c Tue Oct 10 16:03:20 2000 +++ ruby-1.6.2/object.c Wed Oct 11 22:17:03 2000 @@ -136,2 +136,3 @@ rb_any_to_s(obj) sprintf(RSTRING(str)->ptr, "#<%s:0x%lx>", cname, obj); + RSTRING(str)->len = strlen(RSTRING(str)->ptr); if (OBJ_TAINTED(obj)) OBJ_TAINT(str); @@ -201,2 +202,3 @@ rb_obj_inspect(obj) sprintf(RSTRING(str)->ptr, "#<%s:0x%lx ...>", c, obj); + RSTRING(str)->len = strlen(RSTRING(str)->ptr); return str; @@ -205,2 +207,3 @@ rb_obj_inspect(obj) sprintf(RSTRING(str)->ptr, "-<%s:0x%lx ", c, obj); + RSTRING(str)->len = strlen(RSTRING(str)->ptr); return rb_protect_inspect(inspect_obj, obj, str); -- 小松克行 / Katsuyuki Komatsu