diff options
author | Lane Kolbly <lane.kolbly@ni.com> | 2020-03-03 13:00:20 -0600 |
---|---|---|
committer | atrnati <54334261+atrnati@users.noreply.github.com> | 2020-03-03 15:16:06 -0600 |
commit | 11bc3fa3a861d53aa387bb21d26d0d36e961fd78 (patch) | |
tree | 56852e61c2096bc9762572b38cde5aef0819fc2c /mpm/python/usrp_mpm | |
parent | f73f608d9506642579773d0ba969bf96a1871f32 (diff) | |
download | uhd-11bc3fa3a861d53aa387bb21d26d0d36e961fd78.tar.gz uhd-11bc3fa3a861d53aa387bb21d26d0d36e961fd78.tar.bz2 uhd-11bc3fa3a861d53aa387bb21d26d0d36e961fd78.zip |
mpm: Make contextmanagers exception-safe
When making context managers in Python, the yield statement has to be wrapped in a try/finally clause in order to properly clean up after exceptions happen.
Diffstat (limited to 'mpm/python/usrp_mpm')
-rw-r--r-- | mpm/python/usrp_mpm/mpmutils.py | 6 | ||||
-rw-r--r-- | mpm/python/usrp_mpm/sys_utils/uio.py | 6 |
2 files changed, 8 insertions, 4 deletions
diff --git a/mpm/python/usrp_mpm/mpmutils.py b/mpm/python/usrp_mpm/mpmutils.py index a0716d1da..f7e4e3be1 100644 --- a/mpm/python/usrp_mpm/mpmutils.py +++ b/mpm/python/usrp_mpm/mpmutils.py @@ -182,6 +182,8 @@ def lock_guard(lockable): lockable -- Must have a .lock() and .unlock() method """ lockable.lock() - yield - lockable.unlock() + try: + yield + finally: + lockable.unlock() diff --git a/mpm/python/usrp_mpm/sys_utils/uio.py b/mpm/python/usrp_mpm/sys_utils/uio.py index c724557e6..84e4b2b64 100644 --- a/mpm/python/usrp_mpm/sys_utils/uio.py +++ b/mpm/python/usrp_mpm/sys_utils/uio.py @@ -24,8 +24,10 @@ def open_uio(label=None, path=None, length=None, read_only=True, offset=None): Use this like you would open() for a file""" uio_obj = UIO(label, path, length, read_only, offset) uio_obj._open() - yield uio_obj - uio_obj._close() + try: + yield uio_obj + finally: + uio_obj._close() def get_all_uio_devs(): |