aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-30 10:30:00 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-08-30 10:30:00 +0000
commit765e4e2ea68f4b219df33719009ea83677b5d85d (patch)
treed397137646a826518d6d05917b255653a67c9408
parent42e5ff998bc70698131a06120f07d1e12cdabfc3 (diff)
downloadruby-765e4e2ea68f4b219df33719009ea83677b5d85d.tar.gz
symbol.c (rb_sym2id): do not return garbage object
The dynamic sym passed to rb_sym2id may be a garbage object (as accounted for by dsymbol_check). This fixes an occasional segfault in "make test-all" for me. No need to backport, this is from the new symbol GC feature. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@47322 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--symbol.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 5e890687e8..c5d168fc37 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat Aug 30 19:22:47 2014 Eric Wong <e@80x24.org>
+
+ * symbol.c (rb_sym2id): do not return garbage object
+
Sat Aug 30 06:39:48 2014 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/psych/lib/psych/visitors/yaml_tree.rb: fix NameError dumping and
diff --git a/symbol.c b/symbol.c
index b3fa55fab9..c3ce50f830 100644
--- a/symbol.c
+++ b/symbol.c
@@ -759,7 +759,7 @@ rb_sym2id(VALUE sym)
}
else {
if (!SYMBOL_PINNED_P(sym)) {
- dsymbol_pindown(sym);
+ return dsymbol_pindown(sym);
}
return (ID)sym;
}