* error.c (exit_success_p): Check status code more carefully.

status code may have garbage in upper bit.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30271 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
kosaki 2010-12-20 14:49:18 +00:00
Родитель 8f6c729601
Коммит 7503f19346
2 изменённых файлов: 14 добавлений и 3 удалений

Просмотреть файл

@ -1,3 +1,8 @@
Tue Dec 21 00:22:44 2010 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
* 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@fsij.org>
* node.c: parenthesize macro arguments.

12
error.c
Просмотреть файл

@ -710,9 +710,15 @@ exit_status(VALUE exc)
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;
}