From 6bbad2999504110c1b760bb2d62e0d649afef1a9 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 20 May 2003 08:18:16 +0000 Subject: * error.c (syserr_initialize): use Errno constants as default errno for subclasses. [ruby-dev:20241] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@3835 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- error.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'error.c') diff --git a/error.c b/error.c index dbbf0d028..26dec201c 100644 --- a/error.c +++ b/error.c @@ -542,11 +542,17 @@ syserr_initialize(argc, argv, self) char *err; char *buf; VALUE error, mesg; + VALUE klass = rb_obj_class(self); - if (rb_scan_args(argc, argv, "11", &mesg, &error) == 1 && FIXNUM_P(mesg)) { + rb_scan_args(argc, argv, klass == rb_eSystemCallError ? "11" : "02", + &mesg, &error); + if (argc == 1 && FIXNUM_P(mesg)) { error = mesg; mesg = Qnil; } + if (klass != rb_eSystemCallError && NIL_P(error)) { + error = rb_const_get_at(klass, rb_intern("Errno")); + } err = strerror(NUM2LONG(error)); if (!err) err = "Unknown error"; if (RTEST(mesg)) { -- cgit