diff options
author | tadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-09 15:13:45 +0000 |
---|---|---|
committer | tadf <tadf@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-06-09 15:13:45 +0000 |
commit | 4879ae65fde1f7cd9b6133fe9e732d0ddcfadc12 (patch) | |
tree | 8042e564851f56afdcd92bfea82fe8ab415e4f2b /complex.c | |
parent | 52654587548e5acacffd34d403b6a10ffaca9989 (diff) | |
download | ruby-4879ae65fde1f7cd9b6133fe9e732d0ddcfadc12.tar.gz |
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.c | 29 |
1 files changed, 17 insertions, 12 deletions
@@ -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); } |