summaryrefslogtreecommitdiff
path: root/string.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-10 22:41:52 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-10 22:41:52 +0000
commita36197bd5817a6b0611d9f1e7f6b5bf4725ab480 (patch)
treee8f44bb0d8a4e986334b6266ee1d4dd9f8763298 /string.c
parentf16b5afcac605643011c74948a993e6fb81d65d2 (diff)
* string.c (sym_equal): "sym == str" should compare them as
strings. [ruby-dev:29554] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10908 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'string.c')
-rw-r--r--string.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/string.c b/string.c
index dc389b16fb..094907fe54 100644
--- a/string.c
+++ b/string.c
@@ -120,6 +120,7 @@ str_alloc(VALUE klass)
OBJSETUP(str, klass, T_STRING);
if (klass == rb_cSymbol) {
+ /* need to be registered in table */
RBASIC(str)->klass = rb_cString;
}
str->as.heap.ptr = 0;
@@ -4429,15 +4430,16 @@ rb_sym_s_intern(VALUE s)
* sym == obj => true or false
*
* Equality---If <i>sym</i> and <i>obj</i> are exactly the same
- * symbol, returns <code>true</code>. Otherwise, returns
- * <code>false</code>.
+ * symbol, returns <code>true</code>. Otherwise, compares them
+ * as strings.
*/
static VALUE
sym_equal(VALUE sym1, VALUE sym2)
{
if (sym1 == sym2) return Qtrue;
- return Qfalse;
+ if (SYMBOL_P(sym2)) return Qfalse;
+ return rb_str_equal(sym1, sym2);
}
/*