py/modsys: update conditionals for code referencing sys.stdout

Working on a build with PY_IO enabled (for PY_UJSON support) but PY_SYS_STDFILES disabled (no filesystem).  There are multiple references to mp_sys_stdout_obj that should only be enabled if both PY_IO and PY_SYS_STDFILES are enabled.
This commit is contained in:
Tom Collins 2017-01-12 16:08:51 -08:00 committed by Paul Sokolovsky
parent 55491031be
commit f06d0839bd
3 changed files with 8 additions and 8 deletions

View File

@ -406,7 +406,7 @@ STATIC mp_obj_t mp_builtin_print(size_t n_args, const mp_obj_t *args, mp_map_t *
if (end_elem != NULL && end_elem->value != mp_const_none) { if (end_elem != NULL && end_elem->value != mp_const_none) {
end_data = mp_obj_str_get_data(end_elem->value, &end_len); end_data = mp_obj_str_get_data(end_elem->value, &end_len);
} }
#if MICROPY_PY_IO #if MICROPY_PY_IO && MICROPY_PY_SYS_STDFILES
void *stream_obj = &mp_sys_stdout_obj; void *stream_obj = &mp_sys_stdout_obj;
mp_map_elem_t *file_elem = mp_map_lookup(kwargs, MP_OBJ_NEW_QSTR(MP_QSTR_file), MP_MAP_LOOKUP); mp_map_elem_t *file_elem = mp_map_lookup(kwargs, MP_OBJ_NEW_QSTR(MP_QSTR_file), MP_MAP_LOOKUP);
if (file_elem != NULL && file_elem->value != mp_const_none) { if (file_elem != NULL && file_elem->value != mp_const_none) {
@ -417,19 +417,19 @@ STATIC mp_obj_t mp_builtin_print(size_t n_args, const mp_obj_t *args, mp_map_t *
#endif #endif
for (mp_uint_t i = 0; i < n_args; i++) { for (mp_uint_t i = 0; i < n_args; i++) {
if (i > 0) { if (i > 0) {
#if MICROPY_PY_IO #if MICROPY_PY_IO && MICROPY_PY_SYS_STDFILES
mp_stream_write_adaptor(stream_obj, sep_data, sep_len); mp_stream_write_adaptor(stream_obj, sep_data, sep_len);
#else #else
mp_print_strn(&mp_plat_print, sep_data, sep_len, 0, 0, 0); mp_print_strn(&mp_plat_print, sep_data, sep_len, 0, 0, 0);
#endif #endif
} }
#if MICROPY_PY_IO #if MICROPY_PY_IO && MICROPY_PY_SYS_STDFILES
mp_obj_print_helper(&print, args[i], PRINT_STR); mp_obj_print_helper(&print, args[i], PRINT_STR);
#else #else
mp_obj_print_helper(&mp_plat_print, args[i], PRINT_STR); mp_obj_print_helper(&mp_plat_print, args[i], PRINT_STR);
#endif #endif
} }
#if MICROPY_PY_IO #if MICROPY_PY_IO && MICROPY_PY_SYS_STDFILES
mp_stream_write_adaptor(stream_obj, end_data, end_len); mp_stream_write_adaptor(stream_obj, end_data, end_len);
#else #else
mp_print_strn(&mp_plat_print, end_data, end_len, 0, 0, 0); mp_print_strn(&mp_plat_print, end_data, end_len, 0, 0, 0);

View File

@ -45,7 +45,7 @@ extern struct _mp_dummy_t mp_sys_stdin_obj;
extern struct _mp_dummy_t mp_sys_stdout_obj; extern struct _mp_dummy_t mp_sys_stdout_obj;
extern struct _mp_dummy_t mp_sys_stderr_obj; extern struct _mp_dummy_t mp_sys_stderr_obj;
#if MICROPY_PY_IO #if MICROPY_PY_IO && MICROPY_PY_SYS_STDFILES
const mp_print_t mp_sys_stdout_print = {&mp_sys_stdout_obj, mp_stream_write_adaptor}; const mp_print_t mp_sys_stdout_print = {&mp_sys_stdout_obj, mp_stream_write_adaptor};
#endif #endif
@ -106,7 +106,7 @@ STATIC mp_obj_t mp_sys_exit(size_t n_args, const mp_obj_t *args) {
MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_sys_exit_obj, 0, 1, mp_sys_exit); MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_sys_exit_obj, 0, 1, mp_sys_exit);
STATIC mp_obj_t mp_sys_print_exception(size_t n_args, const mp_obj_t *args) { STATIC mp_obj_t mp_sys_print_exception(size_t n_args, const mp_obj_t *args) {
#if MICROPY_PY_IO #if MICROPY_PY_IO && MICROPY_PY_SYS_STDFILES
void *stream_obj = &mp_sys_stdout_obj; void *stream_obj = &mp_sys_stdout_obj;
if (n_args > 1) { if (n_args > 1) {
stream_obj = MP_OBJ_TO_PTR(args[1]); // XXX may fail stream_obj = MP_OBJ_TO_PTR(args[1]); // XXX may fail

View File

@ -39,7 +39,7 @@
#define PF_FLAG_ADD_PERCENT (0x100) #define PF_FLAG_ADD_PERCENT (0x100)
#define PF_FLAG_SHOW_OCTAL_LETTER (0x200) #define PF_FLAG_SHOW_OCTAL_LETTER (0x200)
#if MICROPY_PY_IO #if MICROPY_PY_IO && MICROPY_PY_SYS_STDFILES
# define MP_PYTHON_PRINTER &mp_sys_stdout_print # define MP_PYTHON_PRINTER &mp_sys_stdout_print
#else #else
# define MP_PYTHON_PRINTER &mp_plat_print # define MP_PYTHON_PRINTER &mp_plat_print
@ -55,7 +55,7 @@ typedef struct _mp_print_t {
// All (non-debug) prints go through one of the two interfaces below. // All (non-debug) prints go through one of the two interfaces below.
// 1) Wrapper for platform print function, which wraps MP_PLAT_PRINT_STRN. // 1) Wrapper for platform print function, which wraps MP_PLAT_PRINT_STRN.
extern const mp_print_t mp_plat_print; extern const mp_print_t mp_plat_print;
#if MICROPY_PY_IO #if MICROPY_PY_IO && MICROPY_PY_SYS_STDFILES
// 2) Wrapper for printing to sys.stdout. // 2) Wrapper for printing to sys.stdout.
extern const mp_print_t mp_sys_stdout_print; extern const mp_print_t mp_sys_stdout_print;
#endif #endif