In the case where an mpz number is zero, its `len` is 0 and its `dig` is NULL. In that case, decrementing NULL via `d--` is undefined behavior according to the C specification. Restructuring the loops in this way avoids undefined behavior. Also, ensure that these cases are tested in the coverage test. This doesn't make much difference now, but would otherwise cause errors later when the undefined behavior sanitizer is employed in CI. Signed-off-by: Jeff Epler <jepler@gmail.com>
247 lines
3.1 KiB
Plaintext
247 lines
3.1 KiB
Plaintext
# mp_printf
|
|
-123 +123 123
|
|
-0123
|
|
123
|
|
123
|
|
1ABCDEF
|
|
ab abc ' abc' ' True' 'Tru'
|
|
|
|
false true
|
|
(null)
|
|
-2147483648
|
|
2147483648
|
|
80000000
|
|
80000000
|
|
abc
|
|
%
|
|
# GC
|
|
0
|
|
0
|
|
# GC part 2
|
|
pass
|
|
# tracked allocation
|
|
m_tracked_head = 0
|
|
0 1
|
|
1 1
|
|
2 1
|
|
3 1
|
|
4 1
|
|
5 1
|
|
6 1
|
|
7 1
|
|
0 1
|
|
1 1
|
|
2 1
|
|
3 1
|
|
4 1
|
|
5 1
|
|
6 1
|
|
7 1
|
|
m_tracked_head = 0
|
|
# vstr
|
|
tests
|
|
sts
|
|
|
|
test
|
|
tes
|
|
RuntimeError:
|
|
RuntimeError:
|
|
# repl
|
|
ame__
|
|
port
|
|
|
|
builtins micropython _asyncio _thread
|
|
array binascii btree cexample
|
|
cmath collections cppexample cryptolib
|
|
deflate errno example_package
|
|
ffi framebuf gc hashlib
|
|
heapq io json machine
|
|
marshal math os platform
|
|
random re select socket
|
|
struct sys termios time
|
|
tls uctypes vfs websocket
|
|
me
|
|
|
|
micropython machine marshal math
|
|
|
|
argv atexit byteorder exc_info
|
|
executable exit getsizeof implementation
|
|
intern maxsize modules path
|
|
platform print_exception ps1
|
|
ps2 stderr stdin stdout
|
|
tracebacklimit version version_info
|
|
ementation
|
|
# attrtuple
|
|
(start=1, stop=2, step=3)
|
|
# str
|
|
1
|
|
# bytearray
|
|
data
|
|
# mpz
|
|
1
|
|
12345678
|
|
0
|
|
0
|
|
0
|
|
0
|
|
0
|
|
1
|
|
12345
|
|
6
|
|
-1
|
|
0
|
|
1
|
|
0
|
|
0.000000
|
|
# runtime utils
|
|
TypeError: unsupported type for __abs__: 'str'
|
|
TypeError: unsupported types for __divmod__: 'str', 'str'
|
|
0
|
|
1
|
|
2
|
|
OverflowError: overflow converting long int to machine word
|
|
OverflowError: overflow converting long int to machine word
|
|
ValueError:
|
|
Warning: test
|
|
# format float
|
|
?
|
|
+1e+00
|
|
+1e+00
|
|
# binary
|
|
123
|
|
456
|
|
# VM
|
|
2 1
|
|
# scheduler
|
|
sched(0)=1
|
|
sched(1)=1
|
|
sched(2)=1
|
|
sched(3)=1
|
|
sched(4)=0
|
|
unlocked
|
|
0
|
|
1
|
|
2
|
|
3
|
|
KeyboardInterrupt:
|
|
KeyboardInterrupt:
|
|
10
|
|
loop
|
|
scheduled function
|
|
loop
|
|
scheduled function
|
|
loop
|
|
scheduled function
|
|
scheduled function
|
|
# ringbuf
|
|
99 0
|
|
98 1
|
|
22
|
|
99 0
|
|
97 2
|
|
aa55
|
|
99 0
|
|
0 99
|
|
-1
|
|
1 98
|
|
-1
|
|
2 97
|
|
0
|
|
cc99
|
|
99 0
|
|
0
|
|
11bb
|
|
0
|
|
22ff
|
|
-1
|
|
-1
|
|
0
|
|
0
|
|
abc123
|
|
-1
|
|
-2
|
|
# pairheap
|
|
create: 0 0 0 0
|
|
pop all: 0 1 2 3
|
|
create: 7 6 5 4 3 2 1 0
|
|
pop all: 0 1 2 3 4 5 6 7
|
|
create: 1 - - 1 1 1 1 1 1
|
|
pop all: 1 2
|
|
create: 1 1 1 1 2 2
|
|
pop all: 2 4
|
|
create: 1 1 1 1 1
|
|
pop all: 1 3 4
|
|
create: 3 3 3 1 1 1
|
|
pop all: 1 2 4 5
|
|
# mp_obj_is_type
|
|
1 1
|
|
0 0
|
|
1 1
|
|
1 1
|
|
0 0
|
|
1 1
|
|
# stackctrl
|
|
1 1
|
|
# end coverage.c
|
|
0123456789 b'0123456789'
|
|
7300
|
|
7300
|
|
7300
|
|
7300
|
|
None
|
|
None
|
|
None
|
|
None
|
|
None
|
|
None
|
|
b'123'
|
|
b'123'
|
|
b'123'
|
|
OSError
|
|
0
|
|
None
|
|
None
|
|
cpp None
|
|
(3, 'hellocpp')
|
|
frzstr1
|
|
frzstr1.py
|
|
frzmpy1
|
|
frzmpy1.py
|
|
frzstr_pkg1.__init__
|
|
frzstr_pkg1/__init__.py 1
|
|
frzmpy_pkg1.__init__
|
|
frzmpy_pkg1/__init__.py 1
|
|
frzstr_pkg2.mod
|
|
1
|
|
frzmpy_pkg2.mod
|
|
1
|
|
ZeroDivisionError
|
|
\
|
|
|
|
X
|
|
'\x1b'
|
|
b'\x00\xff'
|
|
frzmpy4 1
|
|
frzmpy4 2
|
|
NULL
|
|
uPy
|
|
a long string that is not interned
|
|
a string that has unicode αβγ chars
|
|
b'bytes 1234\x01'
|
|
123456789
|
|
0
|
|
1
|
|
2
|
|
3
|
|
frozentest.py
|
|
example_package.__init__
|
|
<module 'example_package.foo.bar'>
|
|
example_package.foo.bar.f
|
|
<module 'example_package'> <module 'example_package.foo'> <module 'example_package.foo.bar'>
|
|
example_package.f
|
|
example_package.foo.f
|
|
example_package.foo.bar.f
|
|
True
|
|
example_package.foo.f
|
|
True
|