diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-03-14 02:46:48 -0700 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-03-14 02:46:48 -0700 |
| commit | 1ebebd304a1a1012b29679434b92db20f324371c (patch) | |
| tree | c5bde006fe0892d5fe2e8bc53ac21bfbfce1f39b | |
| parent | 15a9fb26f7d56164dabf65174b188828dd347f17 (diff) | |
| parent | dd29e05f8eafa7943ff56341622f55bb127c486d (diff) | |
| download | mruby-1ebebd304a1a1012b29679434b92db20f324371c.tar.gz mruby-1ebebd304a1a1012b29679434b92db20f324371c.zip | |
Merge pull request #987 from monaka/pr-clean-up-parse.y-20130312
Clean up parse.y.
| -rw-r--r-- | src/parse.y | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/parse.y b/src/parse.y index 5c49db07e..0eb8da25a 100644 --- a/src/parse.y +++ b/src/parse.y @@ -3393,34 +3393,40 @@ toklen(parser_state *p) #define IS_LABEL_POSSIBLE() ((p->lstate == EXPR_BEG && !cmd_state) || IS_ARG()) #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1)) -static unsigned long +static int scan_oct(const int *start, int len, int *retlen) { const int *s = start; - unsigned long retval = 0; + int retval = 0; + + /* PARANOID: assert(len <= 3) */ while (len-- && *s >= '0' && *s <= '7') { retval <<= 3; retval |= *s++ - '0'; } *retlen = s - start; + return retval; } -static unsigned long +static int scan_hex(const int *start, int len, int *retlen) { static const char hexdigit[] = "0123456789abcdef0123456789ABCDEF"; register const int *s = start; - register unsigned long retval = 0; + register int retval = 0; char *tmp; - while (len-- && *s && (tmp = (char *)strchr(hexdigit, *s))) { + /* PARANOID: assert(len <= 2) */ + + while (len-- && *s && (tmp = strchr(hexdigit, *s))) { retval <<= 4; retval |= (tmp - hexdigit) & 15; s++; } *retlen = s - start; + return retval; } |
