Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
a269d821
Commit
a269d821
authored
Jun 16, 2013
by
Brett Cannon
Browse files
Options
Browse Files
Download
Plain Diff
merge
parents
1d75382e
c7b6c50f
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
90 additions
and
33 deletions
+90
-33
Doc/library/codecs.rst
Doc/library/codecs.rst
+5
-1
Doc/library/functions.rst
Doc/library/functions.rst
+30
-10
Lib/codecs.py
Lib/codecs.py
+1
-0
Lib/subprocess.py
Lib/subprocess.py
+25
-18
Lib/test/test_curses.py
Lib/test/test_curses.py
+13
-0
Misc/NEWS
Misc/NEWS
+7
-0
Modules/_curses_panel.c
Modules/_curses_panel.c
+4
-0
Modules/_io/_iomodule.c
Modules/_io/_iomodule.c
+2
-2
Modules/_io/textio.c
Modules/_io/textio.c
+3
-2
No files found.
Doc/library/codecs.rst
View file @
a269d821
...
...
@@ -78,7 +78,11 @@ It defines the following functions:
reference (for encoding only)
* ``'backslashreplace'``: replace with backslashed escape sequences (for
encoding only)
* ``'surrogateescape'``: replace with surrogate U+DCxx, see :pep:`383`
* ``'surrogateescape'``: on decoding, replace with code points in the Unicode
Private Use Area ranging from U+DC80 to U+DCFF. These private code
points will then be turned back into the same bytes when the
``surrogateescape`` error handler is used when encoding the data.
(See :pep:`383` for more.)
as well as any other error handling name defined via :func:`register_error`.
...
...
Doc/library/functions.rst
View file @
a269d821
...
...
@@ -895,16 +895,36 @@ are always available. They are listed here in alphabetical order.
the list of supported encodings.
*errors* is an optional string that specifies how encoding and decoding
errors are to be handled--this cannot be used in binary mode. Pass
``'strict'`` to raise a :exc:`ValueError` exception if there is an encoding
error (the default of ``None`` has the same effect), or pass ``'ignore'`` to
ignore errors. (Note that ignoring encoding errors can lead to data loss.)
``'replace'`` causes a replacement marker (such as ``'?'``) to be inserted
where there is malformed data. When writing, ``'xmlcharrefreplace'``
(replace with the appropriate XML character reference) or
``'backslashreplace'`` (replace with backslashed escape sequences) can be
used. Any other error handling name that has been registered with
:func:`codecs.register_error` is also valid.
errors are to be handled--this cannot be used in binary mode.
A variety of standard error handlers are available, though any
error handling name that has been registered with
:func:`codecs.register_error` is also valid. The standard names
are:
* ``'strict'`` to raise a :exc:`ValueError` exception if there is
an encoding error. The default value of ``None`` has the same
effect.
* ``'ignore'`` ignores errors. Note that ignoring encoding errors
can lead to data loss.
* ``'replace'`` causes a replacement marker (such as ``'?'``) to be inserted
where there is malformed data.
* ``'surrogateescape'`` will represent any incorrect bytes as code
points in the Unicode Private Use Area ranging from U+DC80 to
U+DCFF. These private code points will then be turned back into
the same bytes when the ``surrogateescape`` error handler is used
when writing data. This is useful for processing files in an
unknown encoding.
* ``'xmlcharrefreplace'`` is only supported when writing to a file.
Characters not supported by the encoding are replaced with the
appropriate XML character reference ``&#nnn;``.
* ``'backslashreplace'`` (also only supported when writing)
replaces unsupported characters with Python's backslashed escape
sequences.
.. index::
single: universal newlines; open() built-in function
...
...
Lib/codecs.py
View file @
a269d821
...
...
@@ -105,6 +105,7 @@ class Codec:
Python will use the official U+FFFD REPLACEMENT
CHARACTER for the builtin Unicode codecs on
decoding and '?' on encoding.
'surrogateescape' - replace with private codepoints U+DCnn.
'xmlcharrefreplace' - Replace with the appropriate XML
character reference (only for encoding).
'backslashreplace' - Replace with backslashed escape sequences
...
...
Lib/subprocess.py
View file @
a269d821
...
...
@@ -810,6 +810,7 @@ class Popen(object):
if
universal_newlines
:
self
.
stderr
=
io
.
TextIOWrapper
(
self
.
stderr
)
self
.
_closed_child_pipe_fds
=
False
try
:
self
.
_execute_child
(
args
,
executable
,
preexec_fn
,
close_fds
,
pass_fds
,
cwd
,
env
,
...
...
@@ -826,19 +827,21 @@ class Popen(object):
except
EnvironmentError
:
pass
# Ignore EBADF or other errors.
# Make sure the child pipes are closed as well.
to_close
=
[]
if
stdin
==
PIPE
:
to_close
.
append
(
p2cread
)
if
stdout
==
PIPE
:
to_close
.
append
(
c2pwrite
)
if
stderr
==
PIPE
:
to_close
.
append
(
errwrite
)
for
fd
in
to_close
:
try
:
os
.
close
(
fd
)
except
EnvironmentError
:
pass
if
not
self
.
_closed_child_pipe_fds
:
to_close
=
[]
if
stdin
==
PIPE
:
to_close
.
append
(
p2cread
)
if
stdout
==
PIPE
:
to_close
.
append
(
c2pwrite
)
if
stderr
==
PIPE
:
to_close
.
append
(
errwrite
)
if
hasattr
(
self
,
'_devnull'
):
to_close
.
append
(
self
.
_devnull
)
for
fd
in
to_close
:
try
:
os
.
close
(
fd
)
except
EnvironmentError
:
pass
raise
...
...
@@ -1383,14 +1386,18 @@ class Popen(object):
# be sure the FD is closed no matter what
os
.
close
(
errpipe_write
)
if
p2cread
!=
-
1
and
p2cwrite
!=
-
1
:
# self._devnull is not always defined.
devnull_fd
=
getattr
(
self
,
'_devnull'
,
None
)
if
p2cread
!=
-
1
and
p2cwrite
!=
-
1
and
p2cread
!=
devnull_fd
:
os
.
close
(
p2cread
)
if
c2pwrite
!=
-
1
and
c2pread
!=
-
1
:
if
c2pwrite
!=
-
1
and
c2pread
!=
-
1
and
c2pwrite
!=
devnull_fd
:
os
.
close
(
c2pwrite
)
if
errwrite
!=
-
1
and
errread
!=
-
1
:
if
errwrite
!=
-
1
and
errread
!=
-
1
and
errwrite
!=
devnull_fd
:
os
.
close
(
errwrite
)
if
hasattr
(
self
,
'_devnull'
):
os
.
close
(
self
.
_devnull
)
if
devnull_fd
is
not
None
:
os
.
close
(
devnull_fd
)
# Prevent a double close of these fds from __init__ on error.
self
.
_closed_child_pipe_fds
=
True
# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
...
...
Lib/test/test_curses.py
View file @
a269d821
...
...
@@ -252,6 +252,18 @@ def test_userptr_without_set(stdscr):
except
curses
.
panel
.
error
:
pass
def
test_userptr_memory_leak
(
stdscr
):
w
=
curses
.
newwin
(
10
,
10
)
p
=
curses
.
panel
.
new_panel
(
w
)
obj
=
object
()
nrefs
=
sys
.
getrefcount
(
obj
)
for
i
in
range
(
100
):
p
.
set_userptr
(
obj
)
p
.
set_userptr
(
None
)
if
sys
.
getrefcount
(
obj
)
!=
nrefs
:
raise
RuntimeError
(
"set_userptr leaked references"
)
def
test_resize_term
(
stdscr
):
if
hasattr
(
curses
,
'resizeterm'
):
lines
,
cols
=
curses
.
LINES
,
curses
.
COLS
...
...
@@ -317,6 +329,7 @@ def main(stdscr):
module_funcs
(
stdscr
)
window_funcs
(
stdscr
)
test_userptr_without_set
(
stdscr
)
test_userptr_memory_leak
(
stdscr
)
test_resize_term
(
stdscr
)
test_issue6243
(
stdscr
)
test_unget_wch
(
stdscr
)
...
...
Misc/NEWS
View file @
a269d821
...
...
@@ -32,6 +32,10 @@ Core and Builtins
Library
-------
- subprocess: Prevent a possible double close of parent pipe fds when the
subprocess exec runs into an error. Prevent a regular multi-close of the
/dev/null fd when any of stdin, stdout and stderr was set to DEVNULL.
- Issue #16102: Make uuid._netbios_getnode() work again on Python 3.
- Issue #18109: os.uname() now decodes fields from the locale encoding, and
...
...
@@ -78,6 +82,9 @@ Library
the
default
for
linking
if
LDSHARED
is
not
also
overriden
.
This
restores
Distutils
behavior
introduced
in
3.2.3
and
inadvertently
dropped
in
3.3.0
.
-
Issue
#
18113
:
Fixed
a
refcount
leak
in
the
curses
.
panel
module
's
set_userptr() method. Reported by Atsuo Ishimoto.
IDLE
----
...
...
Modules/_curses_panel.c
View file @
a269d821
...
...
@@ -322,6 +322,10 @@ PyCursesPanel_replace_panel(PyCursesPanelObject *self, PyObject *args)
static
PyObject
*
PyCursesPanel_set_panel_userptr
(
PyCursesPanelObject
*
self
,
PyObject
*
obj
)
{
PyObject
*
oldobj
;
PyCursesInitialised
;
oldobj
=
(
PyObject
*
)
panel_userptr
(
self
->
pan
);
Py_XDECREF
(
oldobj
);
Py_INCREF
(
obj
);
return
PyCursesCheckERR
(
set_panel_userptr
(
self
->
pan
,
(
void
*
)
obj
),
"set_panel_userptr"
);
...
...
Modules/_io/_iomodule.c
View file @
a269d821
...
...
@@ -168,8 +168,8 @@ PyDoc_STRVAR(open_doc,
"'strict' to raise a ValueError exception if there is an encoding error
\n
"
"(the default of None has the same effect), or pass 'ignore' to ignore
\n
"
"errors. (Note that ignoring encoding errors can lead to data loss.)
\n
"
"See the documentation for codecs.register
for a list of the permitted
\n
"
"encoding error strings.
\n
"
"See the documentation for codecs.register
or run 'help(codecs.Codec)'
\n
"
"
for a list of the permitted
encoding error strings.
\n
"
"
\n
"
"newline controls how universal newlines works (it only applies to text
\n
"
"mode). It can be None, '', '
\\
n', '
\\
r', and '
\\
r
\\
n'. It works as
\n
"
...
...
Modules/_io/textio.c
View file @
a269d821
...
...
@@ -642,8 +642,9 @@ PyDoc_STRVAR(textiowrapper_doc,
"encoding gives the name of the encoding that the stream will be
\n
"
"decoded or encoded with. It defaults to locale.getpreferredencoding(False).
\n
"
"
\n
"
"errors determines the strictness of encoding and decoding (see the
\n
"
"codecs.register) and defaults to
\"
strict
\"
.
\n
"
"errors determines the strictness of encoding and decoding (see
\n
"
"help(codecs.Codec) or the documentation for codecs.register) and
\n
"
"defaults to
\"
strict
\"
.
\n
"
"
\n
"
"newline controls how line endings are handled. It can be None, '',
\n
"
"'
\\
n', '
\\
r', and '
\\
r
\\
n'. It works as follows:
\n
"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment