summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-11-26 21:17:16 +0200
committerDamien George <damien.p.george@gmail.com>2014-11-27 17:38:03 +0000
commit1eca32836d558287b404e84a8364d9088e07695a (patch)
treecb1142a19430e8a55a99bdb87d6d30d54ab9bc24
parente5dbe1e28340a9d1a7b651b35d8de449c46fcf23 (diff)
downloadmicropython-1eca32836d558287b404e84a8364d9088e07695a.tar.gz
micropython-1eca32836d558287b404e84a8364d9088e07695a.zip
builtin: Reimplement __repl_print__() in terms of print().
Before, __repl_print__() used libc printf(), while print() used uPy streams and own printf() implementation. This led to subtle, but confusing differences in output when just doing "foo" vs "print(foo)" on interactive prompt.
-rw-r--r--py/builtin.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/py/builtin.c b/py/builtin.c
index b337af3c59..6bcde43645 100644
--- a/py/builtin.c
+++ b/py/builtin.c
@@ -89,15 +89,6 @@ STATIC mp_obj_t mp_builtin___build_class__(mp_uint_t n_args, const mp_obj_t *arg
}
MP_DEFINE_CONST_FUN_OBJ_VAR(mp_builtin___build_class___obj, 2, mp_builtin___build_class__);
-STATIC mp_obj_t mp_builtin___repl_print__(mp_obj_t o) {
- if (o != mp_const_none) {
- mp_obj_print(o, PRINT_REPR);
- printf("\n");
- }
- return mp_const_none;
-}
-MP_DEFINE_CONST_FUN_OBJ_1(mp_builtin___repl_print___obj, mp_builtin___repl_print__);
-
STATIC mp_obj_t mp_builtin_abs(mp_obj_t o_in) {
if (MP_OBJ_IS_SMALL_INT(o_in)) {
mp_int_t val = MP_OBJ_SMALL_INT_VALUE(o_in);
@@ -452,6 +443,14 @@ STATIC mp_obj_t mp_builtin_print(mp_uint_t n_args, const mp_obj_t *args, mp_map_
}
MP_DEFINE_CONST_FUN_OBJ_KW(mp_builtin_print_obj, 0, mp_builtin_print);
+STATIC mp_obj_t mp_builtin___repl_print__(mp_obj_t o) {
+ if (o != mp_const_none) {
+ mp_builtin_print(1, &o, (mp_map_t*)&mp_const_empty_map);
+ }
+ return mp_const_none;
+}
+MP_DEFINE_CONST_FUN_OBJ_1(mp_builtin___repl_print___obj, mp_builtin___repl_print__);
+
STATIC mp_obj_t mp_builtin_repr(mp_obj_t o_in) {
vstr_t *vstr = vstr_new();
mp_obj_print_helper((void (*)(void *env, const char *fmt, ...))vstr_printf, vstr, o_in, PRINT_REPR);