py/runtime.c: Remove optimization of '*a,=b', it caused a bug.

*a, = b should always make a copy of b, instead, before this patch
if b was a list it would copy only a reference to it.
This commit is contained in:
Krzysztof Blazewicz 2017-03-06 08:46:21 +01:00 committed by Damien George
parent 88ffe0d5cc
commit 1215dc47e2

View File

@ -854,11 +854,6 @@ void mp_unpack_ex(mp_obj_t seq_in, size_t num_in, mp_obj_t *items) {
if (MP_OBJ_IS_TYPE(seq_in, &mp_type_tuple)) { if (MP_OBJ_IS_TYPE(seq_in, &mp_type_tuple)) {
mp_obj_tuple_get(seq_in, &seq_len, &seq_items); mp_obj_tuple_get(seq_in, &seq_len, &seq_items);
} else { } else {
if (num_left == 0 && num_right == 0) {
// *a, = b # sets a to b if b is a list
items[0] = seq_in;
return;
}
mp_obj_list_get(seq_in, &seq_len, &seq_items); mp_obj_list_get(seq_in, &seq_len, &seq_items);
} }
if (seq_len < num_left + num_right) { if (seq_len < num_left + num_right) {