summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-11-01 05:01:43 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-11-01 05:01:43 +0000
commitd85ab1ae6eca0d24591be1e1b14709e763f70216 (patch)
treec89989104b5dcd8d8c326fb95d1f0650f246b5af
parentf65f8c9e9462073a8d8f5317e2849706460569fe (diff)
downloadruby-d85ab1ae6eca0d24591be1e1b14709e763f70216.tar.gz
ruby-d85ab1ae6eca0d24591be1e1b14709e763f70216.tar.xz
ruby-d85ab1ae6eca0d24591be1e1b14709e763f70216.zip
* ext/digest/lib/digest/hmac.rb (Digest::HMAC::update): Minor
optimization. * ext/digest/digest.c (rb_digest_instance_equal): Allow comparing a digest instance with another of a different class. git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@11254 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rw-r--r--ext/digest/digest.c8
-rw-r--r--ext/digest/lib/digest/hmac.rb3
3 files changed, 14 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 10b0e3cfe..d9fb6adad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Wed Nov 1 02:22:31 2006 Akinori MUSHA <knu@iDaemons.org>
+
+ * ext/digest/lib/digest/hmac.rb (Digest::HMAC::update): Minor
+ optimization.
+
+ * ext/digest/digest.c (rb_digest_instance_equal): Allow comparing
+ a digest instance with another of a different class.
+
Tue Oct 31 17:03:21 2006 Yukihiro Matsumoto <matz@ruby-lang.org>
* time.c (time_dup): duplicate the class of original time.
diff --git a/ext/digest/digest.c b/ext/digest/digest.c
index 5d58149b5..c4a58cf3f 100644
--- a/ext/digest/digest.c
+++ b/ext/digest/digest.c
@@ -286,16 +286,16 @@ rb_digest_instance_inspect(VALUE self)
* digest_obj == string -> boolean
*
* If a string is given, checks whether it is equal to the hex-encoded
- * hash value of the digest object. If another instance of the same
- * digest class is given, checks whether they have the same hash
- * value. Otherwise returns false.
+ * hash value of the digest object. If another digest instance is
+ * given, checks whether they have the same hash value. Otherwise
+ * returns false.
*/
static VALUE
rb_digest_instance_equal(VALUE self, VALUE other)
{
VALUE str1, str2;
- if (rb_obj_class(self) == rb_obj_class(other)) {
+ if (rb_obj_is_kind_of(other, rb_mDigest_Instance) == Qtrue) {
str1 = rb_digest_instance_digest(0, 0, self);
str2 = rb_digest_instance_digest(0, 0, other);
} else {
diff --git a/ext/digest/lib/digest/hmac.rb b/ext/digest/lib/digest/hmac.rb
index 117788418..0aeb6a8b4 100644
--- a/ext/digest/lib/digest/hmac.rb
+++ b/ext/digest/lib/digest/hmac.rb
@@ -67,7 +67,8 @@ module Digest
end
def update(text)
- @md.reset.update(@opad + @md.digest(@ipad + text))
+ # @md is reset when digest() returns
+ @md.update(@opad + @md.digest(@ipad + text))
self
end