[前][次][番号順一覧][スレッド一覧]

ruby-changes:18248

From: kosaki <ko1@a...>
Date: Mon, 20 Dec 2010 23:52:11 +0900 (JST)
Subject: [ruby-changes:18248] Ruby:r30271 (trunk): * error.c (exit_success_p): Check status code more carefully.

kosaki	2010-12-20 23:49:18 +0900 (Mon, 20 Dec 2010)

  New Revision: 30271

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=30271

  Log:
    * error.c (exit_success_p): Check status code more carefully.
              status code may have garbage in upper bit.

  Modified files:
    trunk/ChangeLog
    trunk/error.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 30270)
+++ ChangeLog	(revision 30271)
@@ -1,3 +1,8 @@
+Tue Dec 21 00:22:44 2010  KOSAKI Motohiro  <kosaki.motohiro@g...>
+
+	* error.c (exit_success_p): Check status code more carefully.
+	  status code may have garbage in upper bit.
+
 Mon Dec 20 23:12:37 2010  Tanaka Akira  <akr@f...>
 
 	* node.c: parenthesize macro arguments.
Index: error.c
===================================================================
--- error.c	(revision 30270)
+++ error.c	(revision 30271)
@@ -710,9 +710,15 @@
 static VALUE
 exit_success_p(VALUE exc)
 {
-    VALUE status = rb_attr_get(exc, rb_intern("status"));
-    if (NIL_P(status)) return Qtrue;
-    if (status == INT2FIX(EXIT_SUCCESS)) return Qtrue;
+    VALUE status_val = rb_attr_get(exc, rb_intern("status"));
+    int status;
+
+    if (NIL_P(status_val))
+	return Qtrue;
+    status = NUM2INT(status_val);
+    if (WIFEXITED(status) && WEXITSTATUS(status) == EXIT_SUCCESS)
+	return Qtrue;
+
     return Qfalse;
 }
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]