diff --git a/ChangeLog b/ChangeLog index 2fc7753374..6e2428b889 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Aug 21 19:17:02 2008 Tanaka Akira + + * process.c (pst_pid): use rb_attr_get to avoid warning on + Process::Status.allocate.pid. + (pst_inspect): don't raise if self is not initialized. + Thu Aug 21 19:05:40 2008 Tanaka Akira * io.c (io_extract_encoding_option): if internal encoding is not diff --git a/process.c b/process.c index c231920eed..22a889d9fd 100644 --- a/process.c +++ b/process.c @@ -271,7 +271,7 @@ pst_to_i(VALUE st) static VALUE pst_pid(VALUE st) { - return rb_iv_get(st, "pid"); + return rb_attr_get(st, rb_intern("pid")); } static void @@ -344,9 +344,13 @@ pst_inspect(VALUE st) { rb_pid_t pid; int status; - VALUE str; + VALUE vpid, str; - pid = NUM2LONG(pst_pid(st)); + vpid = pst_pid(st); + if (NIL_P(vpid)) { + return rb_sprintf("#<%s: uninitialized>", rb_class2name(CLASS_OF(st))); + } + pid = NUM2LONG(vpid); status = PST2INT(st); str = rb_sprintf("#<%s: ", rb_class2name(CLASS_OF(st))); diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb index 668d054743..afcda48912 100644 --- a/test/ruby/test_process.rb +++ b/test/ruby/test_process.rb @@ -1001,4 +1001,7 @@ class TestProcess < Test::Unit::TestCase assert(true == r || false == r) end + def test_pst_inspect + assert_nothing_raised { Process::Status.allocate.inspect } + end end