objstr: *strip(): If nothing is stripped, don't create dup string.

This commit is contained in:
Paul Sokolovsky 2014-05-30 03:11:44 +03:00
parent bcdffe53c6
commit 8827682b35
2 changed files with 10 additions and 0 deletions

View File

@ -691,6 +691,12 @@ STATIC mp_obj_t str_uni_strip(int type, uint n_args, const mp_obj_t *args) {
assert(last_good_char_pos >= first_good_char_pos);
//+1 to accomodate the last character
machine_uint_t stripped_len = last_good_char_pos - first_good_char_pos + 1;
if (stripped_len == orig_str_len) {
// If nothing was stripped, don't bother to dup original string
// TODO: watch out for this case when we'll get to bytearray.strip()
assert(first_good_char_pos == 0);
return args[0];
}
return mp_obj_new_str_of_type(self_type, orig_str + first_good_char_pos, stripped_len);
}

View File

@ -31,3 +31,7 @@ print(" a".rstrip())
print("a ".strip())
print("a ".lstrip())
print("a ".rstrip())
# Test that stripping unstrippable string returns original object
s = "abc"
print(id(s.strip()) == id(s))