diff --git a/ChangeLog b/ChangeLog index 591b278223..0c7f654e9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Jun 20 11:33:04 2012 Nobuyoshi Nakada + + * process.c (rb_execarg_addopt): always make Fixnum, and ignore higher + bits in too large umask value. + Wed Jun 20 11:24:35 2012 Nobuyoshi Nakada * lib/test/unit.rb (Test::Unit::Runner#_run_parallel): deal with diff --git a/process.c b/process.c index 326f379661..6f230ee61b 100644 --- a/process.c +++ b/process.c @@ -1602,7 +1602,7 @@ rb_execarg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val) if (!NIL_P(rb_ary_entry(options, EXEC_OPTION_UMASK))) { rb_raise(rb_eArgError, "umask option specified twice"); } - rb_ary_store(options, EXEC_OPTION_UMASK, LONG2NUM(cmask)); + rb_ary_store(options, EXEC_OPTION_UMASK, LONG2FIX(cmask)); } else if (id == rb_intern("close_others")) { if (!NIL_P(rb_ary_entry(options, EXEC_OPTION_CLOSE_OTHERS))) {