summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-11-21 13:52:49 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2005-11-21 13:52:49 +0000
commit51e0cceb41b1371a7beef6c407d40e3d54a5f0fa (patch)
tree352d9e94f3903f55ca9506ca43df942c584ee8de
parent862215aa023c090d9999dd4ea55792246e92b924 (diff)
downloadruby-51e0cceb41b1371a7beef6c407d40e3d54a5f0fa.tar.gz
ruby-51e0cceb41b1371a7beef6c407d40e3d54a5f0fa.tar.xz
ruby-51e0cceb41b1371a7beef6c407d40e3d54a5f0fa.zip
* parse.y (dsym): prohibit empty symbol literal by interpolation.
fixed: [ruby-talk:166529] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@9579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--parse.y9
2 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 85b683765..687b51fdb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,11 @@
-Mon Nov 21 22:19:33 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+Mon Nov 21 22:50:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_path_skip_prefix, rb_file_s_basename): UNC without path
should not be splitted. fixed: [ruby-dev:27776] [ruby-dev:27786]
+ * parse.y (dsym): prohibit empty symbol literal by interpolation.
+ fixed: [ruby-talk:166529]
+
Mon Nov 21 16:03:48 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
* win32/setup.mk: findstr doesn't exist on win9x.
diff --git a/parse.y b/parse.y
index dc56a4fe2..e9193c7fd 100644
--- a/parse.y
+++ b/parse.y
@@ -3864,12 +3864,19 @@ dsym : tSYMBEG xstring_contents tSTRING_END
yyerror("empty symbol literal");
}
else {
+ VALUE lit;
+
switch (nd_type($$)) {
case NODE_DSTR:
nd_set_type($$, NODE_DSYM);
break;
case NODE_STR:
- if (strlen(RSTRING($$->nd_lit)->ptr) == RSTRING($$->nd_lit)->len) {
+ lit = $$->nd_lit;
+ if (RSTRING(lit)->len == 0) {
+ yyerror("empty symbol literal");
+ break;
+ }
+ if (strlen(RSTRING(lit)->ptr) == RSTRING(lit)->len) {
$$->nd_lit = ID2SYM(rb_intern(RSTRING($$->nd_lit)->ptr));
nd_set_type($$, NODE_LIT);
break;