1.1 --- a/lib/__builtins__/tuple.py Sat Mar 25 17:24:11 2017 +0100
1.2 +++ b/lib/__builtins__/tuple.py Sat Mar 25 17:58:39 2017 +0100
1.3 @@ -21,8 +21,8 @@
1.4
1.5 from __builtins__.iteration.iterator import itemiterator
1.6 from __builtins__.sequence import hashable, sequence
1.7 -from native import list_element, list_init, list_len, list_setsize, \
1.8 - list_setelement
1.9 +from native import tuple_init, \
1.10 + list_element, list_len, list_setsize, list_setelement
1.11
1.12 class tuple(sequence, hashable):
1.13
1.14 @@ -35,16 +35,19 @@
1.15 # Reserve an attribute for a fragment reference along with some space
1.16 # for elements.
1.17
1.18 - size = args is not None and len(args) or 0
1.19 - self.__data__ = list_init(size)
1.20 - list_setsize(self.__data__, size)
1.21 + self.__data__ = tuple_init(size)
1.22
1.23 - # Populate the tuple.
1.24 + if args is None:
1.25 + size = 0
1.26 + else:
1.27 + size = args.__len__()
1.28 + list_setsize(self.__data__, size)
1.29
1.30 - if args is not None:
1.31 + # Populate the tuple.
1.32 +
1.33 i = 0
1.34 - for arg in args:
1.35 - list_setelement(self.__data__, i, arg)
1.36 + while i < size:
1.37 + list_setelement(self.__data__, i, args[i])
1.38 i += 1
1.39
1.40 def __hash__(self):