diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-03-15 22:27:03 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-03-15 22:27:03 +0200 |
commit | 18c78c1bb93a19b070ae631fffddd42f6d9b8a3d (patch) | |
tree | 2a041a26aa7992e29905ce78683e473307c6ead4 | |
parent | ecd46332af122772decfa1164d1cf688135a5b40 (diff) | |
download | meson-18c78c1bb93a19b070ae631fffddd42f6d9b8a3d.zip meson-18c78c1bb93a19b070ae631fffddd42f6d9b8a3d.tar.gz meson-18c78c1bb93a19b070ae631fffddd42f6d9b8a3d.tar.bz2 |
Prevent going into the same subdirectory multiple times.
-rwxr-xr-x | interpreter.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/interpreter.py b/interpreter.py index ff1de6d..e72a6b3 100755 --- a/interpreter.py +++ b/interpreter.py @@ -507,6 +507,7 @@ class Interpreter(): self.subdir = '' self.generators = [] self.coredata = self.environment.get_coredata() + self.visited_subdirs = {} def build_func_dict(self): self.funcs = {'project' : self.func_project, @@ -726,7 +727,12 @@ class Interpreter(): raise InvalidArguments('Line %d: subdir command takes no keyword arguments.' % node.lineno()) self.validate_arguments(args, 1, [str]) prev_subdir = self.subdir - self.subdir = os.path.join(prev_subdir, args[0]) + subdir = os.path.join(prev_subdir, args[0]) + if subdir in self.visited_subdirs: + raise InvalidArguments('Line %d: tried to enter subdir "%s", which has already been visited.'\ + % (node.lineno(), subdir)) + self.visited_subdirs[subdir] = True + self.subdir = subdir buildfilename = os.path.join(self.subdir, environment.build_filename) self.build_def_files.append(buildfilename) code = open(os.path.join(self.environment.get_source_dir(), buildfilename)).read() |