summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-09 15:13:45 +0000
committertadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-06-09 15:13:45 +0000
commit4879ae65fde1f7cd9b6133fe9e732d0ddcfadc12 (patch)
tree8042e564851f56afdcd92bfea82fe8ab415e4f2b
parent52654587548e5acacffd34d403b6a10ffaca9989 (diff)
fixed
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--complex.c29
-rw-r--r--rational.c5
2 files changed, 20 insertions, 14 deletions
diff --git a/complex.c b/complex.c
index f2f331a040..7f99ade0a7 100644
--- a/complex.c
+++ b/complex.c
@@ -1132,7 +1132,7 @@ static VALUE comp_pat1, comp_pat2, a_slash, a_dot_and_an_e,
#define DENOMINATOR "[-+]?" DIGITS
#define NUMBER "[-+]?" NUMERATOR "(?:\\/" DENOMINATOR ")?"
#define NUMBERNOS NUMERATOR "(?:\\/" DENOMINATOR ")?"
-#define PATTERN1 "\\A(" NUMBER "|\\(" NUMBER "\\))?[iIjJ]"
+#define PATTERN1 "\\A((" NUMBER ")|\\((" NUMBER ")\\))?[iIjJ]"
#define PATTERN2 "\\A(" NUMBER ")(([-+])(?:(" NUMBERNOS ")|\\((" NUMBER ")\\))?[iIjJ])?"
static void
@@ -1209,7 +1209,12 @@ string_to_c_internal(VALUE self)
sr = Qnil;
si = f_aref(m, INT2FIX(1));
if (NIL_P(si))
- si = rb_str_new2("1");
+ si = rb_str_new2("1");
+ else {
+ si = f_aref(m, INT2FIX(2));
+ if (NIL_P(si))
+ si = f_aref(m, INT2FIX(3));
+ }
re = f_post_match(m);
}
if (NIL_P(m)) {
@@ -1218,17 +1223,17 @@ string_to_c_internal(VALUE self)
return rb_assoc_new(Qnil, self);
sr = f_aref(m, INT2FIX(1));
if (NIL_P(f_aref(m, INT2FIX(2))))
- si = Qnil;
+ si = Qnil;
else {
- VALUE t;
-
- si = f_aref(m, INT2FIX(3));
- t = f_aref(m, INT2FIX(4));
- if (NIL_P(t))
- t = f_aref(m, INT2FIX(5));
- if (NIL_P(t))
- t = rb_str_new2("1");
- rb_str_concat(si, t);
+ VALUE t;
+
+ si = f_aref(m, INT2FIX(3));
+ t = f_aref(m, INT2FIX(4));
+ if (NIL_P(t))
+ t = f_aref(m, INT2FIX(5));
+ if (NIL_P(t))
+ t = rb_str_new2("1");
+ rb_str_concat(si, t);
}
re = f_post_match(m);
}
diff --git a/rational.c b/rational.c
index 54bca51094..379551a345 100644
--- a/rational.c
+++ b/rational.c
@@ -1422,8 +1422,9 @@ nurat_s_convert(int argc, VALUE *argv, VALUE klass)
{
VALUE a1, a2;
- if (rb_scan_args(argc, argv, "02", &a1, &a2) == 1)
- a2 = ONE;
+ a1 = Qnil;
+ a2 = Qnil;
+ rb_scan_args(argc, argv, "02", &a1, &a2);
switch (TYPE(a1)) {
case T_COMPLEX: