summaryrefslogtreecommitdiff
path: root/complex.c
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 /complex.c
parent52654587548e5acacffd34d403b6a10ffaca9989 (diff)
fixed
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@17064 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'complex.c')
-rw-r--r--complex.c29
1 files changed, 17 insertions, 12 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);
}