diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-08 01:46:33 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-08 01:46:33 +0000 |
commit | 75bbe70e16fe9c25d8a777a7585bad010cb387f9 (patch) | |
tree | 8276901c0f944683c93d197655ece4ce000eeda0 | |
parent | 35e6b90023258d9605221e61191f8434e9634c43 (diff) | |
download | ruby-75bbe70e16fe9c25d8a777a7585bad010cb387f9.tar.gz ruby-75bbe70e16fe9c25d8a777a7585bad010cb387f9.tar.xz ruby-75bbe70e16fe9c25d8a777a7585bad010cb387f9.zip |
* error.c (errno_missing): Errno.const_missing to allow references
to SyscallError exceptions not defined on the platform.
[ruby-core:04522]
* error.c (Init_syserr): Errno::NOERROR(0) for fallback exception.
* eval.c (block_pass): should not push unique number if a block is
not an orphan. [ruby-dev:25808]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@8112 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | error.c | 10 | ||||
-rw-r--r-- | eval.c | 2 | ||||
-rw-r--r-- | lib/parsedate.rb | 5 |
4 files changed, 27 insertions, 3 deletions
@@ -1,3 +1,11 @@ +Tue Mar 8 10:05:40 2005 Yukihiro Matsumoto <matz@ruby-lang.org> + + * error.c (errno_missing): Errno.const_missing to allow references + to SyscallError exceptions not defined on the platform. + [ruby-core:04522] + + * error.c (Init_syserr): Errno::NOERROR(0) for fallback exception. + Sat Mar 8 01:19:00 2005 NARUSE, Yui <naruse@ruby-lang.org> * ext/nkf/nkf-utf8/nkf.c: follow nkf 1.66 @@ -22,6 +30,11 @@ Mon Mar 7 16:46:02 2005 NAKAMURA Usaku <usa@ruby-lang.org> * ext/openssl/ossl_ssl.c (ossl_start_ssl, ossl_ssl_read, ossl_ssl_write): need to set errno on Win32 platform. +Mon Mar 7 14:55:43 2005 Yukihiro Matsumoto <matz@ruby-lang.org> + + * eval.c (block_pass): should not push unique number if a block is + not an orphan. [ruby-dev:25808] + Mon Mar 7 14:13:23 2005 GOTOU Yuuzou <gotoyuzo@notwork.org> * ext/openssl/lib/openssl/buffering.rb (Buffering#initialize): @@ -312,6 +312,7 @@ VALUE rb_eLoadError; VALUE rb_eSystemCallError; VALUE rb_mErrno; +static VALUE eNOERROR; VALUE rb_exc_new(etype, ptr, len) @@ -1016,6 +1017,13 @@ syserr_eqq(self, exc) return Qfalse; } +static VALUE +errno_missing(self, id) + VALUE self, id; +{ + return eNOERROR; +} + /* * Descendents of class <code>Exception</code> are used to communicate * between <code>raise</code> methods and <code>rescue</code> @@ -1085,6 +1093,7 @@ Init_Exception() rb_define_singleton_method(rb_eSystemCallError, "===", syserr_eqq, 1); rb_mErrno = rb_define_module("Errno"); + rb_define_singleton_method(rb_mErrno, "const_missing", errno_missing, 1); rb_define_global_function("warn", rb_warn_m, 1); } @@ -1587,6 +1596,7 @@ Init_syserr() #ifdef EDQUOT set_syserr(EDQUOT, "EDQUOT"); #endif + eNOERROR = set_syserr(0, "NOERROR"); } static void @@ -8598,7 +8598,7 @@ rb_block_pass(func, arg, proc) /* PUSH BLOCK from data */ _block = *data; _block.outer = ruby_block; - _block.uniq = block_unique++; + if (orphan) _block.uniq = block_unique++; ruby_block = &_block; PUSH_ITER(ITER_PRE); if (ruby_frame->iter == ITER_NOT) diff --git a/lib/parsedate.rb b/lib/parsedate.rb index 2c24ec163..39b5e7fa1 100644 --- a/lib/parsedate.rb +++ b/lib/parsedate.rb @@ -12,8 +12,9 @@ module ParseDate def strptime(str, format) - Date._strptime(str, format). - values_at(:year, :mon, :mday, :hour, :min, :sec, :zone, :wday) + d = Date._strptime(str, format) + raise ArgumentError, "invalid strptime format - `#{format}'" unless d + d.values_at(:year, :mon, :mday, :hour, :min, :sec, :zone, :wday) end module_function :parsedate, :strptime |