Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
6ee1e383
Commit
6ee1e383
authored
Jan 04, 2014
by
Paul Sokolovsky
Browse files
str slice: Trim slice indexes to be in range.
parent
c8d1384f
Changes
2
Show whitespace changes
Inline
Side-by-side
py/objstr.c
View file @
6ee1e383
...
...
@@ -41,9 +41,20 @@ mp_obj_t str_binary_op(int op, mp_obj_t lhs_in, mp_obj_t rhs_in) {
int
len
=
strlen
(
lhs_str
);
if
(
start
<
0
)
{
start
=
len
+
start
;
if
(
start
<
0
)
{
start
=
0
;
}
}
else
if
(
start
>
len
)
{
start
=
len
;
}
if
(
stop
<=
0
)
{
stop
=
len
+
stop
;
// CPython returns empty string in such case
if
(
stop
<
0
)
{
stop
=
start
;
}
}
else
if
(
stop
>
len
)
{
stop
=
len
;
}
return
mp_obj_new_str
(
qstr_from_strn_copy
(
lhs_str
+
start
,
stop
-
start
));
#endif
...
...
tests/basics/tests/slice-bstr1.py
View file @
6ee1e383
...
...
@@ -22,6 +22,11 @@ print(b"123"[0:])
print
(
b
"123"
[:
0
])
print
(
b
"123"
[:
-
3
])
print
(
b
"123"
[:
-
4
])
# Range check testing, don't segfault, please ;-)
print
(
b
"123"
[:
1000000
])
print
(
b
"123"
[
1000000
:])
print
(
b
"123"
[:
-
1000000
])
print
(
b
"123"
[
-
1000000
:])
# No IndexError!
print
(
b
""
[
1
:
1
])
print
(
b
""
[
-
1
:
-
1
])
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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