summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-21 10:18:38 +0000
committerakr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-08-21 10:18:38 +0000
commit61acccefb7b90ab8dcbccc216e56c0ea61f1b54a (patch)
treebd5ea03be1886ee286df3f4568bbc82bffeeec4e
parentd34079b17a82ca0c3012a9eb0b99689ac65c585c (diff)
* 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. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18752 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--process.c10
-rw-r--r--test/ruby/test_process.rb3
3 files changed, 16 insertions, 3 deletions
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 <akr@fsij.org>
+
+ * 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 <akr@fsij.org>
* 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