Bug 1256571 - Ensure consistent values for variables in closures. r?chmanchester draft
authorMike Hommey <mh+mozilla@glandium.org>
Fri, 08 Apr 2016 17:30:54 +0900
changeset 350226 0c969f8cf1364ddbf489b7a05154a11fc649e1aa
parent 350225 25d6b9100b0752b10477addde4ff7a171f16cfd7
child 350227 09a1607874d6adbf4cb410fdd6fe7a1a5074c650
push id15274
push userbmo:mh+mozilla@glandium.org
push dateWed, 13 Apr 2016 01:01:28 +0000
reviewerschmanchester
bugs1256571
milestone48.0a1
Bug 1256571 - Ensure consistent values for variables in closures. r?chmanchester
python/mozbuild/mozbuild/configure/__init__.py
--- a/python/mozbuild/mozbuild/configure/__init__.py
+++ b/python/mozbuild/mozbuild/configure/__init__.py
@@ -635,17 +635,26 @@ class ConfigureSandbox(dict):
         )
         glob.update(
             __builtins__=self.BUILTINS,
             __file__=self._paths[-1] if self._paths else '',
             os=self.OS,
             log=self.log_impl,
         )
         self._apply_imports(func, glob)
+        if func.func_closure:
+            def makecell(content):
+                def f():
+                    content
+                return f.func_closure[0]
+
+            closure = tuple(makecell(cell.cell_contents)
+                            for cell in func.func_closure)
+
         func = wraps(func)(types.FunctionType(
             func.func_code,
             glob,
             func.__name__,
             func.func_defaults,
-            func.func_closure
+            func.func_closure and closure
         ))
         self._prepared_functions.add(func)
         return func, glob