Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
7b4b78bc
Commit
7b4b78bc
authored
Mar 21, 2014
by
Damien George
Browse files
py: Put back proper ValueError for badly parsed integers.
parent
b035db35
Changes
1
Show whitespace changes
Inline
Side-by-side
py/parsenum.c
View file @
7b4b78bc
...
...
@@ -41,6 +41,7 @@ mp_obj_t mp_parse_num_integer(const char *restrict str, uint len, int base) {
// string should be an integer number
machine_int_t
int_val
=
0
;
const
char
*
restrict
str_val_start
=
str
;
for
(;
str
<
top
;
str
++
)
{
machine_int_t
old_val
=
int_val
;
int
dig
=
*
str
;
...
...
@@ -69,6 +70,11 @@ mp_obj_t mp_parse_num_integer(const char *restrict str, uint len, int base) {
}
}
// check we parsed something
if
(
str
==
str_val_start
)
{
goto
value_error
;
}
// negate value if needed
if
(
neg
)
{
int_val
=
-
int_val
;
...
...
@@ -80,12 +86,15 @@ mp_obj_t mp_parse_num_integer(const char *restrict str, uint len, int base) {
// check we reached the end of the string
if
(
str
!=
top
)
{
nlr_jump
(
mp_obj_new_exception_msg
(
&
mp_type_SyntaxError
,
"invalid syntax for number"
))
;
goto
value_error
;
}
// return the object
return
MP_OBJ_NEW_SMALL_INT
(
int_val
);
value_error:
nlr_jump
(
mp_obj_new_exception_msg_varg
(
&
mp_type_ValueError
,
"invalid literal for int() with base %d: '%s'"
,
base
,
str
));
overflow:
// TODO reparse using bignum
nlr_jump
(
mp_obj_new_exception_msg
(
&
mp_type_ValueError
,
"overflow parsing integer"
));
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment