Author: Manuel Jacob <m...@manueljacob.de> Branch: py3k Changeset: r79228:aeafe30eac60 Date: 2015-08-25 12:35 +0200 http://bitbucket.org/pypy/pypy/changeset/aeafe30eac60/
Log: Fix three cases where space.wrap() was called with a potentially non-ASCII string. diff --git a/pypy/bin/pyinteractive.py b/pypy/bin/pyinteractive.py --- a/pypy/bin/pyinteractive.py +++ b/pypy/bin/pyinteractive.py @@ -143,7 +143,8 @@ if interactiveconfig.runmodule: command = args.pop(0) for arg in args: - space.call_method(space.sys.get('argv'), 'append', space.wrap(arg)) + space.call_method(space.sys.get('argv'), 'append', + space.wrap_fsdecoded(arg)) # load the source of the program given as command-line argument if interactiveconfig.runcommand: diff --git a/pypy/goal/targetpypystandalone.py b/pypy/goal/targetpypystandalone.py --- a/pypy/goal/targetpypystandalone.py +++ b/pypy/goal/targetpypystandalone.py @@ -61,8 +61,8 @@ rlocale.setlocale(rlocale.LC_CTYPE, '') except rlocale.LocaleError: pass - w_executable = space.fsdecode(space.wrapbytes(argv[0])) - w_argv = space.newlist([space.fsdecode(space.wrapbytes(s)) + w_executable = space.wrap_fsdecoded(argv[0]) + w_argv = space.newlist([space.wrap_fsdecoded(s) for s in argv[1:]]) w_exitcode = space.call_function(w_entry_point, w_executable, w_argv) exitcode = space.int_w(w_exitcode) diff --git a/pypy/interpreter/baseobjspace.py b/pypy/interpreter/baseobjspace.py --- a/pypy/interpreter/baseobjspace.py +++ b/pypy/interpreter/baseobjspace.py @@ -1050,6 +1050,9 @@ from pypy.objspace.std.listobject import make_empty_list_with_size return make_empty_list_with_size(self, sizehint) + def wrap_fsdecoded(self, x): + return self.fsdecode(self.wrapbytes(x)) + @jit.unroll_safe def exception_match(self, w_exc_type, w_check_class): """Checks if the given exception type matches 'w_check_class'.""" diff --git a/pypy/interpreter/main.py b/pypy/interpreter/main.py --- a/pypy/interpreter/main.py +++ b/pypy/interpreter/main.py @@ -19,7 +19,8 @@ def compilecode(space, source, filename, cmd='exec'): w = space.wrap w_code = space.builtin.call( - 'compile', space.wrapbytes(source), w(filename), w(cmd), w(0), w(0)) + 'compile', space.wrapbytes(source), space.wrap_fsdecoded(filename), + w(cmd), w(0), w(0)) pycode = space.interp_w(eval.Code, w_code) return pycode @@ -44,7 +45,8 @@ space.setitem(w_globals, w('__builtins__'), space.builtin) if filename is not None: - space.setitem(w_globals, w('__file__'), w(filename)) + space.setitem(w_globals, w('__file__'), + space.wrap_fsdecoded(filename)) retval = pycode.exec_code(space, w_globals, w_globals) if eval: _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit