summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--complex.c23
-rw-r--r--rational.c17
2 files changed, 22 insertions, 18 deletions
diff --git a/complex.c b/complex.c
index 8af4a5203d..e073acf7cc 100644
--- a/complex.c
+++ b/complex.c
@@ -1,5 +1,5 @@
/*
- complex.c: Coded by Tadayoshi Funaba 2008-2011
+ complex.c: Coded by Tadayoshi Funaba 2008-2012
This implementation is based on Keiju Ishitsuka's Complex library
which is written in ruby.
@@ -1626,10 +1626,8 @@ str2num(char *s)
{
if (strchr(s, '/'))
return rb_cstr_to_rat(s, 0);
- if (strpbrk(s, ".eE")) {
- double d = rb_cstr_to_dbl(s, 0);
- return DBL2NUM(d);
- }
+ if (strpbrk(s, ".eE"))
+ return DBL2NUM(rb_cstr_to_dbl(s, 0));
return rb_cstr_to_inum(s, 10, 0);
}
@@ -1715,6 +1713,13 @@ read_comp(const char **s, int strict,
}
}
+static void
+skip_ws(const char **s)
+{
+ while (isspace((unsigned char)**s))
+ (*s)++;
+}
+
static int
parse_comp(const char *s, int strict,
VALUE *num)
@@ -1724,14 +1729,10 @@ parse_comp(const char *s, int strict,
buf = ALLOCA_N(char, strlen(s) + 1);
b = buf;
- while (isspace((unsigned char)*s))
- s++;
-
+ skip_ws(&s);
if (!read_comp(&s, strict, num, &b))
return 0;
-
- while (isspace((unsigned char)*s))
- s++;
+ skip_ws(&s);
if (strict)
if (*s != '\0')
diff --git a/rational.c b/rational.c
index 88f4083341..9718913a07 100644
--- a/rational.c
+++ b/rational.c
@@ -1,5 +1,5 @@
/*
- rational.c: Coded by Tadayoshi Funaba 2008-2011
+ rational.c: Coded by Tadayoshi Funaba 2008-2012
This implementation is based on Keiju Ishitsuka's Rational library
which is written in ruby.
@@ -2093,18 +2093,21 @@ read_rat(const char **s, int strict,
return 1;
}
+static void
+skip_ws(const char **s)
+{
+ while (isspace((unsigned char)**s))
+ (*s)++;
+}
+
static int
parse_rat(const char *s, int strict,
VALUE *num)
{
- while (isspace((unsigned char)*s))
- s++;
-
+ skip_ws(&s);
if (!read_rat(&s, strict, num))
return 0;
-
- while (isspace((unsigned char)*s))
- s++;
+ skip_ws(&s);
if (strict)
if (*s != '\0')