summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-03-14 02:46:48 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2013-03-14 02:46:48 -0700
commit1ebebd304a1a1012b29679434b92db20f324371c (patch)
treec5bde006fe0892d5fe2e8bc53ac21bfbfce1f39b
parent15a9fb26f7d56164dabf65174b188828dd347f17 (diff)
parentdd29e05f8eafa7943ff56341622f55bb127c486d (diff)
downloadmruby-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.y16
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;
}