From fb77be150636090d69460578ed8458d84db02614 Mon Sep 17 00:00:00 2001 From: Damien George Date: Mon, 19 Sep 2022 10:36:17 +1000 Subject: [PATCH] py: Include filename in errors from loading/saving files via "open". This improves error messages in mpy-cross: - When loading a .py file that doesn't exist (or can't be opened) it now includes the filename in the OSError. - When saving a .mpy file that can't be opened it now raises an exception (prior, it would silently fail), and includes the filename in the OSError. Signed-off-by: Damien George --- py/persistentcode.c | 3 +++ py/reader.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/py/persistentcode.c b/py/persistentcode.c index de84c17359..67c8f327f0 100644 --- a/py/persistentcode.c +++ b/py/persistentcode.c @@ -644,6 +644,9 @@ void mp_raw_code_save_file(mp_compiled_module_t *cm, const char *filename) { MP_THREAD_GIL_EXIT(); int fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0644); MP_THREAD_GIL_ENTER(); + if (fd < 0) { + mp_raise_OSError_with_filename(errno, filename); + } mp_print_t fd_print = {(void *)(intptr_t)fd, fd_print_strn}; mp_raw_code_save(cm, &fd_print); MP_THREAD_GIL_EXIT(); diff --git a/py/reader.c b/py/reader.c index d68406b1c6..57b12b3b65 100644 --- a/py/reader.c +++ b/py/reader.c @@ -139,7 +139,7 @@ void mp_reader_new_file(mp_reader_t *reader, const char *filename) { int fd = open(filename, O_RDONLY, 0644); MP_THREAD_GIL_ENTER(); if (fd < 0) { - mp_raise_OSError(errno); + mp_raise_OSError_with_filename(errno, filename); } mp_reader_new_file_from_fd(reader, fd, true); }