py/persistentcode: Always close reader even if an exception is raised.

Fixes issue #3874.

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George
2023-09-05 18:18:47 +10:00
parent 5e122b11ea
commit 397697aa83
3 changed files with 19 additions and 1 deletions

View File

@@ -69,6 +69,7 @@ user_files = {
"/usermod1.py": b"print('in usermod1')\nimport usermod2",
"/usermod2.py": b"print('in usermod2')",
"/usermod3.py": b"syntax error",
"/usermod4.mpy": b"syntax error",
}
os.mount(UserFS(user_files), "/userfs")
@@ -86,6 +87,12 @@ try:
except SyntaxError:
print("SyntaxError in usermod3")
# import a .mpy file with a syntax error (file should be closed on error)
try:
import usermod4
except ValueError:
print("ValueError in usermod4")
# unmount and undo path addition
os.umount("/userfs")
sys.path.pop()

View File

@@ -15,3 +15,9 @@ stat /usermod3.py
open /usermod3.py rb
ioctl 4 0
SyntaxError in usermod3
stat /usermod4
stat /usermod4.py
stat /usermod4.mpy
open /usermod4.mpy rb
ioctl 4 0
ValueError in usermod4