aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-03-08 01:46:33 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-03-08 01:46:33 +0000
commit2f2cc0ddfc8785ef5cc030159fba6b040836be13 (patch)
tree8276901c0f944683c93d197655ece4ce000eeda0
parent2a91610f3a32fa075b77d445b87dccbc4d85bd1d (diff)
downloadruby-2f2cc0ddfc8785ef5cc030159fba6b040836be13.tar.gz
* 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: svn+ssh://ci.ruby-lang.org/ruby/trunk@8112 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog13
-rw-r--r--error.c10
-rw-r--r--eval.c2
-rw-r--r--lib/parsedate.rb5
4 files changed, 27 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 57f3832e45..5749b70a32 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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):
diff --git a/error.c b/error.c
index f8414060f5..91bc993542 100644
--- a/error.c
+++ b/error.c
@@ -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
diff --git a/eval.c b/eval.c
index 276989aa45..59e115408a 100644
--- a/eval.c
+++ b/eval.c
@@ -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 2c24ec1636..39b5e7fa1e 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