py-api utf8/filepaths:
in function PyC_UnicodeAsByte(), replace code copied from python with PyUnicode_EncodeFSDefault(), new in py3.2.
This commit is contained in:
		@@ -212,29 +212,7 @@ const char *PyC_UnicodeAsByte(PyObject *py_str, PyObject **coerce)
 | 
			
		||||
		return PyBytes_AS_STRING(py_str);
 | 
			
		||||
	}
 | 
			
		||||
	else {
 | 
			
		||||
		/* mostly copied from fileio.c's, fileio_init */
 | 
			
		||||
		PyObject *stringobj;
 | 
			
		||||
		PyObject *u;
 | 
			
		||||
 | 
			
		||||
		PyErr_Clear();
 | 
			
		||||
		
 | 
			
		||||
		u= PyUnicode_FromObject(py_str); /* coerce into unicode */
 | 
			
		||||
		
 | 
			
		||||
		if (u == NULL)
 | 
			
		||||
			return NULL;
 | 
			
		||||
 | 
			
		||||
		stringobj= PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(u), PyUnicode_GET_SIZE(u), "surrogateescape");
 | 
			
		||||
		Py_DECREF(u);
 | 
			
		||||
		if (stringobj == NULL)
 | 
			
		||||
			return NULL;
 | 
			
		||||
		if (!PyBytes_Check(stringobj)) { /* this seems wrong but it works fine */
 | 
			
		||||
			// printf("encoder failed to return bytes\n");
 | 
			
		||||
			Py_DECREF(stringobj);
 | 
			
		||||
			return NULL;
 | 
			
		||||
		}
 | 
			
		||||
		*coerce= stringobj;
 | 
			
		||||
 | 
			
		||||
		return PyBytes_AS_STRING(stringobj);
 | 
			
		||||
		return PyBytes_AS_STRING((*coerce= PyUnicode_EncodeFSDefault(py_str)));
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user