diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-09-01 23:12:06 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-09-01 23:12:06 +0300 |
commit | cdf0c4f1a945f1262ae604047fd240b25cf44050 (patch) | |
tree | efb861fa017c1f8663b75570fe61fa644c2bd3d0 /mesonbuild/scripts/depfixer.py | |
parent | 389259c229b30d38ec9de503dff965973b24ee26 (diff) | |
parent | 859c5e28df90851838aacc4b9ad49d3630e4992a (diff) | |
download | meson-cdf0c4f1a945f1262ae604047fd240b25cf44050.zip meson-cdf0c4f1a945f1262ae604047fd240b25cf44050.tar.gz meson-cdf0c4f1a945f1262ae604047fd240b25cf44050.tar.bz2 |
Merge branch 'QuLogic-context-managers'
Diffstat (limited to 'mesonbuild/scripts/depfixer.py')
-rw-r--r-- | mesonbuild/scripts/depfixer.py | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/mesonbuild/scripts/depfixer.py b/mesonbuild/scripts/depfixer.py index cb136f4..7124c6f 100644 --- a/mesonbuild/scripts/depfixer.py +++ b/mesonbuild/scripts/depfixer.py @@ -115,11 +115,21 @@ class Elf(DataSizes): self.bfile = bfile self.verbose = verbose self.bf = open(bfile, 'r+b') - (self.ptrsize, self.is_le) = self.detect_elf_type() - super().__init__(self.ptrsize, self.is_le) - self.parse_header() - self.parse_sections() - self.parse_dynamic() + try: + (self.ptrsize, self.is_le) = self.detect_elf_type() + super().__init__(self.ptrsize, self.is_le) + self.parse_header() + self.parse_sections() + self.parse_dynamic() + except: + self.bf.close() + raise + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.bf.close() def detect_elf_type(self): data = self.bf.read(6) @@ -308,13 +318,13 @@ def run(args): print('Don\'t run this unless you know what you are doing.') print('%s: <binary file> <prefix>' % sys.argv[0]) exit(1) - e = Elf(args[0]) - if len(args) == 1: - e.print_rpath() - e.print_runpath() - else: - new_rpath = args[1] - e.fix_rpath(new_rpath) + with Elf(args[0]) as e: + if len(args) == 1: + e.print_rpath() + e.print_runpath() + else: + new_rpath = args[1] + e.fix_rpath(new_rpath) return 0 if __name__ == '__main__': |