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:
Guido van Rossum 2007-07-10 08:30:03 +00:00
parent 6718062538
commit a098294446
3 changed files with 24 additions and 9 deletions

View file

@ -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;
}