mirror of
https://github.com/python/cpython.git
synced 2025-08-28 12:45:07 +00:00
Make test_urllib.py pass. Mostly str/bytes issues.
Also fix mac toolbox glue to accept str, str8, bytes for 255-byte strings.
This commit is contained in:
parent
6718062538
commit
a098294446
3 changed files with 24 additions and 9 deletions
|
@ -209,14 +209,29 @@ PyMac_BuildNumVersion(NumVersion t)
|
|||
int
|
||||
PyMac_GetStr255(PyObject *v, Str255 pbuf)
|
||||
{
|
||||
int len;
|
||||
if (!PyString_Check(v) || (len = PyString_Size(v)) > 255) {
|
||||
char *ptr;
|
||||
Py_ssize_t len = 1000;
|
||||
|
||||
if (PyUnicode_Check(v)) {
|
||||
v = _PyUnicode_AsDefaultEncodedString(v, NULL);
|
||||
if (v == NULL)
|
||||
return NULL;
|
||||
}
|
||||
if (PyString_Check(v)) {
|
||||
ptr = PyString_AS_STRING(v);
|
||||
len = PyString_GET_SIZE(v);
|
||||
}
|
||||
else if (PyBytes_Check(v)) {
|
||||
ptr = PyBytes_AS_STRING(v);
|
||||
len = PyBytes_GET_SIZE(v);
|
||||
}
|
||||
if (len > 255) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"Str255 arg must be string of at most 255 chars");
|
||||
"Str255 arg must be string/bytes of at most 255 chars");
|
||||
return 0;
|
||||
}
|
||||
pbuf[0] = len;
|
||||
memcpy((char *)(pbuf+1), PyString_AsString(v), len);
|
||||
memcpy((char *)(pbuf+1), ptr, len);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue