mirror of https://github.com/python/cpython
Accept only the system default encoding when converting Python
strings to CF strings. Fixes 682215.
This commit is contained in:
parent
f008998668
commit
d505cab5b3
|
@ -14,9 +14,9 @@
|
|||
|
||||
/* Macro to test whether a weak-loaded CFM function exists */
|
||||
#define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
|
||||
PyErr_SetString(PyExc_NotImplementedError, \
|
||||
"Not available in this shared library/OS version"); \
|
||||
return NULL; \
|
||||
PyErr_SetString(PyExc_NotImplementedError, \
|
||||
"Not available in this shared library/OS version"); \
|
||||
return NULL; \
|
||||
}} while(0)
|
||||
|
||||
|
||||
|
@ -1458,7 +1458,7 @@ int CFStringRefObj_Convert(PyObject *v, CFStringRef *p_itself)
|
|||
if (v == Py_None) { *p_itself = NULL; return 1; }
|
||||
if (PyString_Check(v)) {
|
||||
char *cStr = PyString_AsString(v);
|
||||
*p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, 0);
|
||||
*p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII);
|
||||
return 1;
|
||||
}
|
||||
if (PyUnicode_Check(v)) {
|
||||
|
|
|
@ -359,8 +359,10 @@ class CFStringRefObjectDefinition(MyGlobalObjectDefinition):
|
|||
Out("""
|
||||
if (v == Py_None) { *p_itself = NULL; return 1; }
|
||||
if (PyString_Check(v)) {
|
||||
char *cStr = PyString_AsString(v);
|
||||
*p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, 0);
|
||||
char *cStr;
|
||||
if (!PyArg_Parse(v, "et", "ascii", &cStr))
|
||||
return NULL;
|
||||
*p_itself = CFStringCreateWithCString((CFAllocatorRef)NULL, cStr, kCFStringEncodingASCII);
|
||||
return 1;
|
||||
}
|
||||
if (PyUnicode_Check(v)) {
|
||||
|
|
|
@ -292,8 +292,9 @@ PyCF_Python2CF_string(PyObject *src, CFStringRef *dst) {
|
|||
UniChar *unichars;
|
||||
|
||||
if (PyString_Check(src)) {
|
||||
if ((chars = PyString_AsString(src)) == NULL ) goto err;
|
||||
*dst = CFStringCreateWithCString((CFAllocatorRef)NULL, chars, 0);
|
||||
if (!PyArg_Parse(src, "es", NULL, &chars))
|
||||
return NULL; /* This error is more descriptive than the general one below */
|
||||
*dst = CFStringCreateWithCString((CFAllocatorRef)NULL, chars, kCFStringEncodingASCII);
|
||||
return 1;
|
||||
}
|
||||
if (PyUnicode_Check(src)) {
|
||||
|
|
Loading…
Reference in New Issue