[pypy-svn] r14942 - pypy/dist/pypy/interpreter
pedronis at codespeak.net
pedronis at codespeak.net
Fri Jul 22 22:55:07 CEST 2005
Author: pedronis
Date: Fri Jul 22 22:55:06 2005
New Revision: 14942
Modified:
pypy/dist/pypy/interpreter/function.py
Log:
avoid co_freevars to be attached to eval.Code
Modified: pypy/dist/pypy/interpreter/function.py
==============================================================================
--- pypy/dist/pypy/interpreter/function.py (original)
+++ pypy/dist/pypy/interpreter/function.py Fri Jul 22 22:55:06 2005
@@ -150,11 +150,15 @@
return space.wrap(self.code)
def fset_func_code(space, self, w_code):
+ from pypy.interpreter.pycode import PyCode
code = space.interpclass_w(w_code)
if not isinstance(code, Code):
raise OperationError(space.w_TypeError, space.wrap("func_code must be set to a code object") )
- if len(self.code.co_freevars) != len(code.co_freevars):
- raise OperationError(space.w_ValueError, space.wrap("%s() requires a code object with %s free vars, not %s " % (self.name, len(self.code.co_freevars), len(code.co_freevars))))
+ closure_len = 0
+ if self.closure:
+ closure_len = len(self.closure)
+ if isinstance(code, PyCode) and closure_len != len(code.co_freevars):
+ raise OperationError(space.w_ValueError, space.wrap("%s() requires a code object with %s free vars, not %s " % (self.name, closure_len, len(code.co_freevars))))
self.code = code
def fget_func_closure(space, self):
More information about the Pypy-commit
mailing list