diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-08-02 01:58:20 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-08-02 01:58:20 +0900 |
| commit | 1549502079ed1b3b7bbae66e661e4a15a9a3f3d6 (patch) | |
| tree | e9df8322e2b004fce0d0e5de490d8dd41a52a3ac /src/object.c | |
| parent | bce9198732d489daa3d179b185c532544a6d6c60 (diff) | |
| download | mruby-1549502079ed1b3b7bbae66e661e4a15a9a3f3d6.tar.gz mruby-1549502079ed1b3b7bbae66e661e4a15a9a3f3d6.zip | |
mrb_check_convert_type should always return nil on error
Diffstat (limited to 'src/object.c')
| -rw-r--r-- | src/object.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/object.c b/src/object.c index 25439e1d2..26df48afd 100644 --- a/src/object.c +++ b/src/object.c @@ -327,8 +327,7 @@ mrb_check_to_integer(mrb_state *mrb, mrb_value val, const char *method) if (mrb_type(val) == MRB_TT_FIXNUM) return val; v = convert_type(mrb, val, "Integer", method, FALSE); - if (mrb_nil_p(v)) return (v); - if (!mrb_obj_is_kind_of(mrb, v, mrb_obj_class(mrb, v))) { + if (mrb_nil_p(v) || mrb_type(v) != MRB_TT_FIXNUM) { return mrb_nil_value(); } return v; @@ -343,7 +342,7 @@ mrb_convert_type(mrb_state *mrb, mrb_value val, mrb_int type, const char *tname, v = convert_type(mrb, val, tname, method, 1/*Qtrue*/); if (mrb_type(v) != type) { mrb_raise(mrb, E_TYPE_ERROR, "%s cannot be converted to %s by #%s", - mrb_obj_classname(mrb, val), tname, method); + mrb_obj_classname(mrb, val), tname, method); } return v; } @@ -353,14 +352,9 @@ mrb_check_convert_type(mrb_state *mrb, mrb_value val, mrb_int type, const char * { mrb_value v; - /* always convert T_DATA */ if (mrb_type(val) == type && type != MRB_TT_DATA) return val; v = convert_type(mrb, val, tname, method, 0/*Qfalse*/); - if (mrb_nil_p(v)) return mrb_nil_value(); - if (mrb_type(v) != type) { - mrb_raise(mrb, E_TYPE_ERROR, "%s#%s should return %s", - mrb_obj_classname(mrb, val), method, tname); - } + if (mrb_nil_p(v) || mrb_type(v) != type) return mrb_nil_value(); return v; } |
