summaryrefslogtreecommitdiff
path: root/marshal.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-04-15 00:06:13 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-04-15 00:06:13 +0000
commit57fb2199059cb55b632d093c2e64c8a3c60acfbb (patch)
treee35e0fb134907d12cee224d3750f4cc00c7b7634 /marshal.c
parentb860144680e3af51f7fc0d7185185a92c4fa6aca (diff)
* reduce UNREACHABLE.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35333 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'marshal.c')
-rw-r--r--marshal.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/marshal.c b/marshal.c
index 362cfa544d..e05b9f5c76 100644
--- a/marshal.c
+++ b/marshal.c
@@ -1143,12 +1143,10 @@ r_symlink(struct load_arg *arg)
st_data_t id;
long num = r_long(arg);
- if (st_lookup(arg->symbols, num, &id)) {
- return (ID)id;
+ if (!st_lookup(arg->symbols, num, &id)) {
+ rb_raise(rb_eArgError, "bad symbol");
}
- rb_raise(rb_eArgError, "bad symbol");
-
- UNREACHABLE;
+ return (ID)id;
}
static ID
@@ -1181,6 +1179,8 @@ r_symbol(struct load_arg *arg)
again:
switch ((type = r_byte(arg))) {
+ default:
+ rb_raise(rb_eArgError, "dump format error for symbol(0x%x)", type);
case TYPE_IVAR:
ivar = 1;
goto again;
@@ -1191,12 +1191,7 @@ r_symbol(struct load_arg *arg)
rb_raise(rb_eArgError, "dump format error (symlink with encoding)");
}
return r_symlink(arg);
- default:
- rb_raise(rb_eArgError, "dump format error for symbol(0x%x)", type);
- break;
}
-
- UNREACHABLE;
}
static VALUE