]> granicus.if.org Git - python/commitdiff
This is the uncontroversial half of patch 1263 by Thomas Lee:
authorGuido van Rossum <guido@python.org>
Fri, 19 Oct 2007 21:48:41 +0000 (21:48 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 19 Oct 2007 21:48:41 +0000 (21:48 +0000)
changes to codecs.c and structmember.c to use PyUnicode instead of
PyString.

Python/codecs.c
Python/structmember.c

index 464fffc1507725615aab18971dd9ad936080d20a..4b2467634dd30bfb083abf190c16ec74fe1e15b0 100644 (file)
@@ -55,16 +55,15 @@ PyObject *normalizestring(const char *string)
     size_t len = strlen(string);
     char *p;
     PyObject *v;
-    
+
     if (len > PY_SSIZE_T_MAX) {
        PyErr_SetString(PyExc_OverflowError, "string is too large");
        return NULL;
     }
-       
-    v = PyString_FromStringAndSize(NULL, len);
-    if (v == NULL)
-       return NULL;
-    p = PyString_AS_STRING(v);
+
+    p = PyMem_Malloc(len + 1);
+    if (p == NULL)
+        return NULL;
     for (i = 0; i < len; i++) {
         register char ch = string[i];
         if (ch == ' ')
@@ -73,6 +72,11 @@ PyObject *normalizestring(const char *string)
             ch = tolower(Py_CHARMASK(ch));
        p[i] = ch;
     }
+    p[i] = '\0';
+    v = PyUnicode_FromString(p);
+    if (v == NULL)
+        return NULL;
+    PyMem_Free(p);
     return v;
 }
 
@@ -112,7 +116,7 @@ PyObject *_PyCodec_Lookup(const char *encoding)
     v = normalizestring(encoding);
     if (v == NULL)
        goto onError;
-    PyString_InternInPlace(&v);
+    PyUnicode_InternInPlace(&v);
 
     /* First, try to lookup the name in the registry dictionary */
     result = PyDict_GetItem(interp->codec_search_cache, v);
@@ -193,7 +197,7 @@ PyObject *args_tuple(PyObject *object,
     if (errors) {
        PyObject *v;
        
-       v = PyString_FromString(errors);
+       v = PyUnicode_FromString(errors);
        if (v == NULL) {
            Py_DECREF(args);
            return NULL;
index 3eb72183a1efe11cd8459c6b3d206a419e5bc01f..c4b7d80873fe5d5d3649919884d7121abc7006be 100644 (file)
@@ -51,13 +51,13 @@ PyMember_GetOne(const char *addr, PyMemberDef *l)
                        v = Py_None;
                }
                else
-                       v = PyString_FromString(*(char**)addr);
+                       v = PyUnicode_FromString(*(char**)addr);
                break;
        case T_STRING_INPLACE:
-               v = PyString_FromString((char*)addr);
+               v = PyUnicode_FromString((char*)addr);
                break;
        case T_CHAR:
-               v = PyString_FromStringAndSize((char*)addr, 1);
+               v = PyUnicode_FromStringAndSize((char*)addr, 1);
                break;
        case T_OBJECT:
                v = *(PyObject **)addr;
@@ -225,8 +225,8 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v)
                Py_XDECREF(oldv);
                break;
        case T_CHAR:
-               if (PyString_Check(v) && PyString_Size(v) == 1) {
-                       *(char*)addr = PyString_AsString(v)[0];
+               if (PyUnicode_Check(v) && PyUnicode_GetSize(v) == 1) {
+                       *(char*)addr = PyUnicode_AsString(v)[0];
                }
                else {
                        PyErr_BadArgument();