summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--array.c6
-rw-r--r--lib/ping.rb2
-rw-r--r--range.c6
-rw-r--r--string.c3
5 files changed, 12 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 7e5f0a9b5d..fba397bd1d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Jul 24 13:32:47 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * range.c (rb_range_beg_len): returns Qnil only when "beg" points
+ outside of a range. No boundary check for "end".
+
Fri Jul 23 16:40:25 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
* gc.c (define_final): should not disclose NODE* to Ruby world.
diff --git a/array.c b/array.c
index 10b6d64504..a3b4b4f642 100644
--- a/array.c
+++ b/array.c
@@ -620,10 +620,8 @@ rb_ary_subseq(ary, beg, len)
* continuing for _length_ elements, or returns a subarray
* specified by _range_.
* Negative indices count backward from the end of the
- * array (-1 is the last element). Returns nil if any indices
- * are out of range unless the index equals the array size and a
- * _length_ or _range_ parameter is given, in which case an
- * empty array is returned.
+ * array (-1 is the last element). Returns nil if the index
+ * (or starting index) are out of range.
*
* a = [ "a", "b", "c", "d", "e" ]
* a[2] + a[0] + a[1] #=> "cab"
diff --git a/lib/ping.rb b/lib/ping.rb
index d90551e671..7f970f96de 100644
--- a/lib/ping.rb
+++ b/lib/ping.rb
@@ -49,7 +49,7 @@ module Ping
end
rescue Errno::ECONNREFUSED
return true
- rescue
+ rescue Timeout::Error
return false
end
return true
diff --git a/range.c b/range.c
index 46cc6d0bc8..be0896bcfe 100644
--- a/range.c
+++ b/range.c
@@ -480,14 +480,12 @@ rb_range_beg_len(range, begp, lenp, len, err)
}
if (err == 0 || err == 2) {
if (beg > len) goto out_of_range;
- if (end > len)
- end = len;
+ if (end > len) end = len;
}
if (end < 0) end += len;
if (!EXCL(range)) end++; /* include end point */
- if (end < 0) goto out_of_range;
len = end - beg;
- if (len < 0) goto out_of_range;
+ if (len < 0) len = 0;
*begp = beg;
*lenp = len;
diff --git a/string.c b/string.c
index e2dc44ee59..7dd824186f 100644
--- a/string.c
+++ b/string.c
@@ -1543,7 +1543,8 @@ rb_str_aref(str, indx)
* a[1..3] #=> "ell"
* a[-3,2] #=> "er"
* a[-4..-2] #=> "her"
- * a[-2..-4] #=> nil
+ * a[12..-1] #=> nil
+ * a[-2..-4] #=> ""
* a[/[aeiou](.)\1/] #=> "ell"
* a[/[aeiou](.)\1/, 0] #=> "ell"
* a[/[aeiou](.)\1/, 1] #=> "l"