diff --git a/Mac/Modules/cf/_CFmodule.c b/Mac/Modules/cf/_CFmodule.c index 4f5d935b269..8473eb56bad 100644 --- a/Mac/Modules/cf/_CFmodule.c +++ b/Mac/Modules/cf/_CFmodule.c @@ -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)) { diff --git a/Mac/Modules/cf/cfsupport.py b/Mac/Modules/cf/cfsupport.py index 973c4d4fae7..bb0ac40483f 100644 --- a/Mac/Modules/cf/cfsupport.py +++ b/Mac/Modules/cf/cfsupport.py @@ -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)) { diff --git a/Mac/Modules/cf/pycfbridge.c b/Mac/Modules/cf/pycfbridge.c index 00efa725196..d4466aca108 100644 --- a/Mac/Modules/cf/pycfbridge.c +++ b/Mac/Modules/cf/pycfbridge.c @@ -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)) {