diff options
author | enge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2009-03-19 11:31:34 +0000 |
---|---|---|
committer | enge <enge@211d60ee-9f03-0410-a15a-8952a2c7a4e4> | 2009-03-19 11:31:34 +0000 |
commit | 9789a00771c4d683fe3d6e6f9574b0f228d16036 (patch) | |
tree | 1121c6a92dac37cd8c3ec5bb9ee95a9db29bdd81 /src/strtoc.c | |
parent | 3a61f0483bdde1ee951d56609d453bf40cd85297 (diff) | |
download | mpc-9789a00771c4d683fe3d6e6f9574b0f228d16036.tar.gz |
strtoc returns -1 upon error
git-svn-id: svn://scm.gforge.inria.fr/svn/mpc/trunk@467 211d60ee-9f03-0410-a15a-8952a2c7a4e4
Diffstat (limited to 'src/strtoc.c')
-rw-r--r-- | src/strtoc.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/src/strtoc.c b/src/strtoc.c index cd3e2d7..6da6959 100644 --- a/src/strtoc.c +++ b/src/strtoc.c @@ -1,6 +1,6 @@ /* mpc_strtoc -- Read a complex number from a string. -Copyright (C) 2009 Philippe Th\'eveny +Copyright (C) 2009 Philippe Th\'eveny, Andreas Enge This file is part of the MPC Library. @@ -26,24 +26,24 @@ MA 02111-1307, USA. */ #include "config.h" +static void +skip_whitespace (char **p) { + while (isspace ((unsigned char) **p)) + (*p)++; +} + int -mpc_strtoc (mpc_ptr rop, char *nptr, char **endptr, int base, mpc_rnd_t rnd) -{ - char *p; - char *end; - int bracketed = 0; +mpc_strtoc (mpc_ptr rop, char *nptr, char **endptr, int base, mpc_rnd_t rnd) { + char *p, *end; + int bracketed = 0; - int inex_re = 0; - int inex_im = 0; + int inex_re = 0, inex_im = 0; - if (base != 0 && (base < 2 || base > 62)) - goto error; - - if (nptr == NULL) + if (nptr == NULL || base > 36 || base == 1) goto error; p = nptr; - for (p = nptr; isspace (*p); ++p); + skip_whitespace (&p); if (*p == '(') { @@ -67,7 +67,7 @@ mpc_strtoc (mpc_ptr rop, char *nptr, char **endptr, int base, mpc_rnd_t rnd) if (end == p) goto error; p = end; - + if (*p != ')') goto error; @@ -87,5 +87,5 @@ mpc_strtoc (mpc_ptr rop, char *nptr, char **endptr, int base, mpc_rnd_t rnd) *endptr = nptr; mpfr_set_nan (MPC_RE (rop)); mpfr_set_nan (MPC_IM (rop)); - return 0; + return -1; } |