summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--ext/digest/digest.c7
2 files changed, 8 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 1be5693cac..b54c9dd05a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Sat Jun 7 12:28:53 2014 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * ext/digest/digest.c (rb_digest_instance_equal): no need to call
+ `to_s` twice. [Bug #9913]
+
Sat Jun 7 11:35:01 2014 Tanaka Akira <akr@fsij.org>
* object.c (rb_mod_initialize_clone): Override Kernel#initialize_clone
diff --git a/ext/digest/digest.c b/ext/digest/digest.c
index 8a53bd2b00..f1592f4725 100644
--- a/ext/digest/digest.c
+++ b/ext/digest/digest.c
@@ -370,11 +370,10 @@ rb_digest_instance_equal(VALUE self, VALUE 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 if (!NIL_P(rb_check_string_type(other))) {
- str1 = rb_digest_instance_to_s(self);
- str2 = other;
} else {
- return Qfalse;
+ str1 = rb_digest_instance_to_s(self);
+ str2 = rb_check_string_type(other);
+ if (NIL_P(str2)) return Qfalse;
}
/* never blindly assume that subclass methods return strings */