summaryrefslogtreecommitdiffhomepage
path: root/src/range.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-05-24 01:09:36 +0900
committerYukihiro Matsumoto <[email protected]>2012-05-24 01:09:36 +0900
commitad9e841c5359efdd37a132767e03ad7a2d5ae72e (patch)
tree8e60edf2dce29e86d8b47d0b2e8dc8a2a2329ded /src/range.c
parent4f012f578f22cca67af8c633845464abc79913f4 (diff)
downloadmruby-ad9e841c5359efdd37a132767e03ad7a2d5ae72e.tar.gz
mruby-ad9e841c5359efdd37a132767e03ad7a2d5ae72e.zip
made mrb_get_args() better (optinal args, type checks); close #173 #176
Diffstat (limited to 'src/range.c')
-rw-r--r--src/range.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/range.c b/src/range.c
index 06a0d0821..c1fb580b5 100644
--- a/src/range.c
+++ b/src/range.c
@@ -433,8 +433,8 @@ static mrb_value
range_eql(mrb_state *mrb, mrb_value range)
{
mrb_value obj;
- mrb_get_args(mrb, "o", &obj);
+ mrb_get_args(mrb, "o", &obj);
if (mrb_obj_equal(mrb, range, obj))
return mrb_true_value();
if (!mrb_obj_is_kind_of(mrb, obj, RANGE_CLASS))
@@ -447,16 +447,17 @@ mrb_value
range_initialize_copy(mrb_state *mrb, mrb_value copy)
{
mrb_value src;
+
mrb_get_args(mrb, "o", &src);
- if (mrb_obj_equal(mrb, copy, src)) return copy;
- //mrb_check_frozen(copy);
- if (!mrb_obj_is_instance_of(mrb, src, mrb_obj_class(mrb, copy))) {
- mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class");
- }
- memcpy(mrb_range_ptr(copy), mrb_range_ptr(src), sizeof(struct RRange));
+ if (mrb_obj_equal(mrb, copy, src)) return copy;
+ //mrb_check_frozen(copy);
+ if (!mrb_obj_is_instance_of(mrb, src, mrb_obj_class(mrb, copy))) {
+ mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class");
+ }
+ memcpy(mrb_range_ptr(copy), mrb_range_ptr(src), sizeof(struct RRange));
- return copy;
+ return copy;
}
void