diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-02-04 05:02:43 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 1998-02-04 05:02:43 +0000 |
commit | 6449abf51ef98436da2e6b229447f2a9e0cae970 (patch) | |
tree | f20629839d412379b2df57e59cc0ff8a403c3d86 | |
parent | 01bb9da7acfeb868eeec4fc20061c57d85b26cf8 (diff) |
segv on empty arrays
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@64 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | array.c | 7 |
2 files changed, 10 insertions, 1 deletions
@@ -1,3 +1,7 @@ +Wed Feb 4 13:55:26 1998 Yukihiro Matsumoto <matz@netlab.co.jp> + + * array.c (ary_reverse): SEGV on empty array reverse. + Tue Feb 3 12:24:07 1998 Yukihiro Matsumoto <matz@netlab.co.jp> * re.c (match_to_a): non matching element should be nil. @@ -410,7 +410,7 @@ ary_indexes(ary, args) VALUE new_ary; int i = 0; - if (!args || NIL_P(args)) { + if (!args || NIL_P(args) || RARRAY(args)->len == 0) { return ary_new2(0); } @@ -683,6 +683,8 @@ ary_reverse(ary) VALUE *p1, *p2; VALUE tmp; + if (RARRAY(ary)->len == 0) return ary; + p1 = RARRAY(ary)->ptr; p2 = p1 + RARRAY(ary)->len - 1; /* points last item */ @@ -734,6 +736,8 @@ VALUE ary_sort_bang(ary) VALUE ary; { + if (RARRAY(ary)->len == 0) return ary; + ary_modify(ary); qsort(RARRAY(ary)->ptr, RARRAY(ary)->len, sizeof(VALUE), iterator_p()?sort_1:sort_2); return ary; @@ -743,6 +747,7 @@ VALUE ary_sort(ary) VALUE ary; { + if (RARRAY(ary)->len == 0) return ary; return ary_sort_bang(ary_clone(ary)); } |