commit | decad08ef57aa3cf3960ce65e29b194cb97c6d22 | [log] [tgz] |
---|---|---|
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | Fri Jan 03 23:36:56 2014 +0200 |
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | Sat Jan 04 02:35:48 2014 +0200 |
tree | 90081a761735054d7c1212106550b858b2562810 | |
parent | 59800afae9f74571eea5bb463a28fd9bd8251150 [diff] |
str: Handle non-positive slice indexes.
diff --git a/py/objstr.c b/py/objstr.c index 46adabc..54dd087 100644 --- a/py/objstr.c +++ b/py/objstr.c
@@ -39,6 +39,13 @@ int start, stop, step; mp_obj_slice_get(rhs_in, &start, &stop, &step); assert(step == 1); + int len = strlen(lhs_str); + if (start < 0) { + start = len + start; + } + if (stop <= 0) { + stop = len + stop; + } return mp_obj_new_str(qstr_from_strn_copy(lhs_str + start, stop - start)); } else { // Throw TypeError here