diff options
author | Hemmo Nieminen <hemmo.nieminen@iki.fi> | 2017-01-31 19:10:08 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2017-02-02 19:39:33 +0200 |
commit | e42f366e0b272196b99ae4f80453d6679b3f90bb (patch) | |
tree | d15531d6760eec2a2671554b75e84c88831726c7 | |
parent | 380b9157b8a282552e1463ca9a0e486e5b6319e2 (diff) | |
download | meson-e42f366e0b272196b99ae4f80453d6679b3f90bb.tar.gz |
Fix an uninitialized variable access error.
To reproduce, one could write:
foo = files('foo.c')
foo[0].path()
and get:
Traceback (most recent call last):
[snip]
File "/home/trhd/Projects/meson/mesonbuild/interpreterbase.py", line 398, in method_call
raise InvalidArguments('Variable "%s" is not callable.' % object_name)
UnboundLocalError: local variable 'object_name' referenced before assignment
Fix this by handling file objects separately.
-rw-r--r-- | mesonbuild/interpreterbase.py | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py index 12e4fc46e..e59557abc 100644 --- a/mesonbuild/interpreterbase.py +++ b/mesonbuild/interpreterbase.py @@ -392,6 +392,8 @@ class InterpreterBase: return self.int_method_call(obj, method_name, args) if isinstance(obj, list): return self.array_method_call(obj, method_name, self.reduce_arguments(args)[0]) + if isinstance(obj, mesonlib.File): + raise InvalidArguments('File object "%s" is not callable.' % obj) if not isinstance(obj, InterpreterObject): raise InvalidArguments('Variable "%s" is not callable.' % object_name) (args, kwargs) = self.reduce_arguments(args) |