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
36025478
Commit
36025478
authored
Feb 26, 2013
by
Victor Stinner
Browse files
Options
Browse Files
Download
Plain Diff
(Merge 3.3) Issue #17223: Fix PyUnicode_FromUnicode() for string of 1 character
outside the range U+0000-U+10ffff.
parents
c1903898
d21b58c0
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
7 deletions
+10
-7
Misc/NEWS
Misc/NEWS
+3
-0
Objects/unicodeobject.c
Objects/unicodeobject.c
+7
-7
No files found.
Misc/NEWS
View file @
36025478
...
@@ -10,6 +10,9 @@ What's New in Python 3.4.0 Alpha 1?
...
@@ -10,6 +10,9 @@ What's New in Python 3.4.0 Alpha 1?
Core and Builtins
Core and Builtins
-----------------
-----------------
- Issue #17223: Fix PyUnicode_FromUnicode() for string of 1 character outside
the range U+0000-U+10ffff.
- Issue #17275: Corrected class name in init error messages of the C version of
- Issue #17275: Corrected class name in init error messages of the C version of
BufferedWriter and BufferedRandom.
BufferedWriter and BufferedRandom.
...
...
Objects/unicodeobject.c
View file @
36025478
...
@@ -241,7 +241,7 @@ static int unicode_modifiable(PyObject *unicode);
...
@@ -241,7 +241,7 @@ static int unicode_modifiable(PyObject *unicode);
static
PyObject
*
static
PyObject
*
_PyUnicode_FromUCS1
(
const
unsigned
char
*
s
,
Py_ssize_t
size
);
_PyUnicode_FromUCS1
(
const
Py_UCS1
*
s
,
Py_ssize_t
size
);
static
PyObject
*
static
PyObject
*
_PyUnicode_FromUCS2
(
const
Py_UCS2
*
s
,
Py_ssize_t
size
);
_PyUnicode_FromUCS2
(
const
Py_UCS2
*
s
,
Py_ssize_t
size
);
static
PyObject
*
static
PyObject
*
...
@@ -432,7 +432,7 @@ unicode_result_wchar(PyObject *unicode)
...
@@ -432,7 +432,7 @@ unicode_result_wchar(PyObject *unicode)
if
(
len
==
1
)
{
if
(
len
==
1
)
{
wchar_t
ch
=
_PyUnicode_WSTR
(
unicode
)[
0
];
wchar_t
ch
=
_PyUnicode_WSTR
(
unicode
)[
0
];
if
(
ch
<
256
)
{
if
(
(
Py_UCS4
)
ch
<
256
)
{
PyObject
*
latin1_char
=
get_latin1_char
((
unsigned
char
)
ch
);
PyObject
*
latin1_char
=
get_latin1_char
((
unsigned
char
)
ch
);
Py_DECREF
(
unicode
);
Py_DECREF
(
unicode
);
return
latin1_char
;
return
latin1_char
;
...
@@ -1757,7 +1757,7 @@ PyUnicode_FromUnicode(const Py_UNICODE *u, Py_ssize_t size)
...
@@ -1757,7 +1757,7 @@ PyUnicode_FromUnicode(const Py_UNICODE *u, Py_ssize_t size)
/* Single character Unicode objects in the Latin-1 range are
/* Single character Unicode objects in the Latin-1 range are
shared when using this constructor */
shared when using this constructor */
if
(
size
==
1
&&
*
u
<
256
)
if
(
size
==
1
&&
(
Py_UCS4
)
*
u
<
256
)
return
get_latin1_char
((
unsigned
char
)
*
u
);
return
get_latin1_char
((
unsigned
char
)
*
u
);
/* If not empty and not single character, copy the Unicode data
/* If not empty and not single character, copy the Unicode data
...
@@ -1865,7 +1865,7 @@ _PyUnicode_FromASCII(const char *buffer, Py_ssize_t size)
...
@@ -1865,7 +1865,7 @@ _PyUnicode_FromASCII(const char *buffer, Py_ssize_t size)
PyObject
*
unicode
;
PyObject
*
unicode
;
if
(
size
==
1
)
{
if
(
size
==
1
)
{
#ifdef Py_DEBUG
#ifdef Py_DEBUG
assert
(
s
[
0
]
<
128
);
assert
(
(
unsigned
char
)
s
[
0
]
<
128
);
#endif
#endif
return
get_latin1_char
(
s
[
0
]);
return
get_latin1_char
(
s
[
0
]);
}
}
...
@@ -1907,7 +1907,7 @@ align_maxchar(Py_UCS4 maxchar)
...
@@ -1907,7 +1907,7 @@ align_maxchar(Py_UCS4 maxchar)
}
}
static
PyObject
*
static
PyObject
*
_PyUnicode_FromUCS1
(
const
unsigned
char
*
u
,
Py_ssize_t
size
)
_PyUnicode_FromUCS1
(
const
Py_UCS1
*
u
,
Py_ssize_t
size
)
{
{
PyObject
*
res
;
PyObject
*
res
;
unsigned
char
max_char
;
unsigned
char
max_char
;
...
@@ -2792,8 +2792,8 @@ PyUnicode_FromOrdinal(int ordinal)
...
@@ -2792,8 +2792,8 @@ PyUnicode_FromOrdinal(int ordinal)
return
NULL
;
return
NULL
;
}
}
if
(
ordinal
<
256
)
if
(
(
Py_UCS4
)
ordinal
<
256
)
return
get_latin1_char
(
ordinal
);
return
get_latin1_char
(
(
unsigned
char
)
ordinal
);
v
=
PyUnicode_New
(
1
,
ordinal
);
v
=
PyUnicode_New
(
1
,
ordinal
);
if
(
v
==
NULL
)
if
(
v
==
NULL
)
...
...
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