objstr: *strip(): Fix handling of one-char subject strings.
This commit is contained in:
parent
059f95b2cb
commit
bcdffe53c6
|
@ -667,6 +667,7 @@ STATIC mp_obj_t str_uni_strip(int type, uint n_args, const mp_obj_t *args) {
|
|||
for (machine_uint_t len = orig_str_len; len > 0; len--) {
|
||||
if (find_subbytes(chars_to_del, chars_to_del_len, &orig_str[i], 1, 1) == NULL) {
|
||||
if (!first_good_char_pos_set) {
|
||||
first_good_char_pos_set = true;
|
||||
first_good_char_pos = i;
|
||||
if (type == LSTRIP) {
|
||||
last_good_char_pos = orig_str_len - 1;
|
||||
|
@ -676,14 +677,13 @@ STATIC mp_obj_t str_uni_strip(int type, uint n_args, const mp_obj_t *args) {
|
|||
last_good_char_pos = i;
|
||||
break;
|
||||
}
|
||||
first_good_char_pos_set = true;
|
||||
}
|
||||
last_good_char_pos = i;
|
||||
}
|
||||
i += delta;
|
||||
}
|
||||
|
||||
if (first_good_char_pos == 0 && last_good_char_pos == 0) {
|
||||
if (!first_good_char_pos_set) {
|
||||
// string is all whitespace, return ''
|
||||
return MP_OBJ_NEW_QSTR(MP_QSTR_);
|
||||
}
|
||||
|
|
|
@ -20,3 +20,14 @@ try:
|
|||
print('mississippi'.rstrip(b'ipz'))
|
||||
except TypeError:
|
||||
print("TypeError")
|
||||
|
||||
# single-char subj string used to give a problem
|
||||
print("a".strip())
|
||||
print("a".lstrip())
|
||||
print("a".rstrip())
|
||||
print(" a".strip())
|
||||
print(" a".lstrip())
|
||||
print(" a".rstrip())
|
||||
print("a ".strip())
|
||||
print("a ".lstrip())
|
||||
print("a ".rstrip())
|
||||
|
|
Loading…
Reference in New Issue