aboutsummaryrefslogtreecommitdiff
path: root/py/parsenumbase.c
diff options
context:
space:
mode:
Diffstat (limited to 'py/parsenumbase.c')
-rw-r--r--py/parsenumbase.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/py/parsenumbase.c b/py/parsenumbase.c
index cb524057f..31e4a9164 100644
--- a/py/parsenumbase.c
+++ b/py/parsenumbase.c
@@ -29,8 +29,10 @@
// find real radix base, and strip preceding '0x', '0o' and '0b'
// puts base in *base, and returns number of bytes to skip the prefix
mp_uint_t mp_parse_num_base(const char *str, mp_uint_t len, mp_uint_t *base) {
- (void)len; // TODO use given len?
const byte *p = (const byte*)str;
+ if (len <= 1) {
+ goto no_prefix;
+ }
unichar c = *(p++);
if ((*base == 0 || *base == 16) && c == '0') {
c = *(p++);
@@ -57,10 +59,11 @@ mp_uint_t mp_parse_num_base(const char *str, mp_uint_t len, mp_uint_t *base) {
p -= 2;
}
} else {
+ p--;
+ no_prefix:
if (*base == 0) {
*base = 10;
}
- p--;
}
return p - (const byte*)str;
}