Damien George
be8e5744e6
py/nlrx86,x64: Replace #define of defined() with portable macro usage.
...
Using gcc -Wpedantic will warn that #define of defined() is non-portable
and this patch fixes this.
2017-08-29 12:52:18 +10:00
Paul Sokolovsky
37379a2974
py/objstr: startswith, endswith: Check arg to be a string.
...
Otherwise, it will silently get incorrect result on other values types,
including CPython tuple form like "foo.png".endswith(("png", "jpg"))
(which MicroPython doesn't support for unbloatedness).
2017-08-29 00:06:21 +03:00
Damien George
f9ecaa132f
py/asmthumb: Use existing macro to properly clear the D-cache.
...
This macro is provided by stmhal/mphalport.h and makes sure the addr and
size arguments are correctly aligned.
2017-08-23 11:32:27 +10:00
Damien George
f5309fc4ff
py/formatfloat: Don't post-increment variable that won't be used again.
2017-08-21 22:04:23 +10:00
Damien George
103ae43f95
py/objcomplex: Remove unnecessary assignment of variable.
2017-08-21 22:03:27 +10:00
Damien George
ad6aae13a4
py/compile: Remove unused pn_colon code when compiling func params.
2017-08-21 22:00:34 +10:00
Damien George
b16a755a0b
py/mkrules.mk: Use "find -path" when searching for frozen obj files.
...
This allows the command to succeed without error even if there is no
$(BUILD)/build directory, which is the case for mpy-cross.
2017-08-21 20:32:30 +10:00
Paul Sokolovsky
e3383e9352
py/stream: seek: Consistently handle negative offset for SEEK_SET.
...
Per POSIX, this is EINVAL, so raises OSError(EINVAL).
2017-08-20 22:02:41 +03:00
Paul Sokolovsky
0cd9ab7755
py/objstringio: Fix regression with handling SEEK_SET.
...
For SEEK_SET, offset should be treated as unsigned, to allow full-width
stream sizes (e.g. 32-bit instead of 31-bit). This is now fully documented
in stream.h. Also, seek symbolic constants are added.
2017-08-20 22:02:41 +03:00
Tom Collins
168350cd98
py/objstringio: Prevent offset wraparound for io.BytesIO objects.
...
Too big positive, or too big negative offset values could lead to overflow
and address space wraparound and thus access to unrelated areas of memory
(a security issue).
2017-08-20 22:00:05 +03:00
Damien George
025e5f2b33
py/binary: Change internal bytearray typecode from 0 to 1.
...
The value of 0 can't be used because otherwise mp_binary_get_size will let
a null byte through as the type code (intepreted as byterray). This can
lead to invalid type-specifier strings being let through without an error
in the struct module, and even buffer overruns.
2017-08-17 16:19:35 +10:00
Stefan Naumann
ace9fb5405
py: Add verbose debug compile-time flag MICROPY_DEBUG_VERBOSE.
...
It enables all the DEBUG_printf outputs in the py/ source code.
2017-08-15 11:53:36 +10:00
Bas van Sisseren
a14ce77b28
py/binary.c: Fix bug when packing big-endian 'Q' values.
...
Without bugfix:
struct.pack('>Q', 16)
b'\x00\x00\x00\x10\x00\x00\x00\x00'
With bugfix:
struct.pack('>Q', 16)
b'\x00\x00\x00\x00\x00\x00\x00\x10'
2017-08-15 11:33:43 +10:00
Javier Candeira
35a1fea90b
all: Raise exceptions via mp_raise_XXX
...
- Changed: ValueError, TypeError, NotImplementedError
- OSError invocations unchanged, because the corresponding utility
function takes ints, not strings like the long form invocation.
- OverflowError, IndexError and RuntimeError etc. not changed for now
until we decide whether to add new utility functions.
2017-08-13 22:52:33 +10:00
Paul Sokolovsky
bfc2092dc5
py/modsys: Initial implementation of sys.getsizeof().
...
Implemented as a new MP_UNARY_OP. This patch adds support lists, dicts and
instances.
2017-08-11 09:43:07 +03:00
Damien George
7d4a2f773c
all: Make use of $(TOP) variable in Makefiles, instead of "..".
...
$(TOP) is defined in py/mkenv.mk and should be used to refer to the top
level of this repository.
2017-08-11 12:22:19 +10:00
Damien George
3d25d9c7d9
py/objstr: Raise an exception for wrong type on RHS of str binary op.
...
The main case to catch is invalid types for the containment operator, of
the form str.__contains__(non-str).
2017-08-09 21:25:48 +10:00
Damien George
eb2784e8a2
py/objtuple: Allow to use inplace-multiplication operator on tuples.
2017-08-09 21:20:42 +10:00
Paul Sokolovsky
4dc7c5649b
py/mkrules.mk: Show frozen modules sizes together with executable size.
...
This works for Unix and similar ports so far.
2017-08-06 15:43:21 +03:00
Damien George
0f12082f5b
py,extmod,stmhal: Use "static inline" for funcs that should be inline.
...
"STATIC inline" can expand to "inline" if STATIC is defined to nothing, and
this case can lead to link errors.
2017-08-02 13:42:34 +10:00
Alexander Steffen
55f33240f3
all: Use the name MicroPython consistently in comments
...
There were several different spellings of MicroPython present in comments,
when there should be only one.
2017-07-31 18:35:40 +10:00
Damien George
b62bb53d0e
py/modsys: Use MP_ROM_INT for int values in an mp_rom_map_elem_t.
2017-07-31 12:59:39 +10:00
Paul Sokolovsky
456450437f
py/modio: BufferedWriter: Convert to mp_rom_map_elem_t.
2017-07-28 21:54:59 +03:00
Damien George
04552ff71b
py: Implement raising a big-int to a negative power.
...
Before this patch raising a big-int to a negative power would just return
0. Now it returns a floating-point number with the correct value.
2017-07-25 11:49:22 +10:00
Damien George
4d1fb6107f
py/mpz: Make mpz_is_zero() an inline function.
...
It's more efficient as an inline function, and saves code size.
2017-07-25 11:32:04 +10:00