diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | array.c | 34 | ||||
-rw-r--r-- | ext/digest/sha1/sha1ossl.h | 4 |
3 files changed, 30 insertions, 13 deletions
@@ -1,3 +1,8 @@ +Wed Oct 11 14:56:10 2006 Yukihiro Matsumoto <matz@ruby-lang.org> + + * ext/digest/sha1/sha1ossl.h: libssl 0.9.8c-3 defines no + SHA_BLOCK_LENGTH. + Wed Oct 11 14:03:31 2006 Akinori MUSHA <knu@iDaemons.org> * ext/digest/digest.c (rb_digest_base_reset, Init_digest): Add @@ -1227,6 +1227,24 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary) return ary; } +VALUE +each_internal(VALUE ary) +{ + long i; + + for (i=0; i<RARRAY_LEN(ary); i++) { + rb_yield(RARRAY_PTR(ary)[i]); + } + return ary; +} + +static VALUE +iter_unlock(VALUE ary) +{ + FL_UNSET(ary, ARY_TMPLOCK); + return ary; +} + /* * call-seq: * array.each {|item| block } -> array @@ -1245,12 +1263,9 @@ rb_ary_insert(int argc, VALUE *argv, VALUE ary) VALUE rb_ary_each(VALUE ary) { - long i; - RETURN_ENUMERATOR(ary, 0, 0); - for (i=0; i<RARRAY_LEN(ary); i++) { - rb_yield(RARRAY_PTR(ary)[i]); - } + FL_SET(ary, ARY_TMPLOCK); /* prohibit modification during each */ + rb_ensure(each_internal, ary, iter_unlock, ary); return ary; } @@ -1623,13 +1638,6 @@ sort_internal(VALUE ary) return ary; } -static VALUE -sort_unlock(VALUE ary) -{ - FL_UNSET(ary, ARY_TMPLOCK); - return ary; -} - /* * call-seq: * array.sort! -> array @@ -1652,7 +1660,7 @@ rb_ary_sort_bang(VALUE ary) rb_ary_modify(ary); if (RARRAY_LEN(ary) > 1) { FL_SET(ary, ARY_TMPLOCK); /* prohibit modification during sort */ - rb_ensure(sort_internal, ary, sort_unlock, ary); + rb_ensure(sort_internal, ary, iter_unlock, ary); } return ary; } diff --git a/ext/digest/sha1/sha1ossl.h b/ext/digest/sha1/sha1ossl.h index c2e19d66e..8a5b9cfc0 100644 --- a/ext/digest/sha1/sha1ossl.h +++ b/ext/digest/sha1/sha1ossl.h @@ -8,7 +8,11 @@ #define SHA1_CTX SHA_CTX +#ifdef SHA_BLOCK_LENGTH #define SHA1_BLOCK_LENGTH SHA_BLOCK_LENGTH +#else +#define SHA1_BLOCK_LENGTH SHA_CBLOCK +#endif #define SHA1_DIGEST_LENGTH SHA_DIGEST_LENGTH void SHA1_Finish(SHA1_CTX *ctx, char *buf); |