From 39599dca9db7431510f1d68609db5ea0b60af2cb Mon Sep 17 00:00:00 2001 From: Amaury Forgeot d'Arc Date: Thu, 22 Nov 2007 02:48:12 +0000 Subject: PyString_AsString is permissive and accepts unicode strings. Replace it with PyUnicode_AsString when the argument is known to be a str. --- Objects/setobject.c | 2 +- Objects/stringobject.c | 4 ++-- Python/ast.c | 2 +- Python/getargs.c | 8 ++++---- Python/peephole.c | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Objects/setobject.c b/Objects/setobject.c index f6ea441..d85a28d 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -2303,7 +2303,7 @@ test_c_api(PySetObject *so) /* Exercise direct iteration */ i = 0, count = 0; while (_PySet_Next((PyObject *)dup, &i, &x)) { - s = PyString_AsString(x); + s = PyUnicode_AsString(x); assert(s && (s[0] == 'a' || s[0] == 'b' || s[0] == 'c')); count++; } diff --git a/Objects/stringobject.c b/Objects/stringobject.c index ae2a977..d341436 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -3273,7 +3273,7 @@ _PyString_FormatLong(PyObject *val, int flags, int prec, int type, if (!result) return NULL; - buf = PyString_AsString(result); + buf = PyUnicode_AsString(result); if (!buf) { Py_DECREF(result); return NULL; @@ -3284,7 +3284,7 @@ _PyString_FormatLong(PyObject *val, int flags, int prec, int type, PyErr_BadInternalCall(); return NULL; } - llen = PyString_Size(result); + llen = PyUnicode_GetSize(result); if (llen > INT_MAX) { PyErr_SetString(PyExc_ValueError, "string too large in _PyString_FormatLong"); diff --git a/Python/ast.c b/Python/ast.c index 2a5d8b8..f3a2828 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -1299,7 +1299,7 @@ ast_for_atom(struct compiling *c, const node *n) if (errstr) { char *s = ""; char buf[128]; - s = PyString_AsString(errstr); + s = PyUnicode_AsString(errstr); PyOS_snprintf(buf, sizeof(buf), "(unicode error) %s", s); ast_error(n, buf); } else { diff --git a/Python/getargs.c b/Python/getargs.c index 48860cc..584805e 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -768,7 +768,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, else if (PyUnicode_Check(arg) && PyUnicode_GET_SIZE(arg) == 1 && PyUnicode_AS_UNICODE(arg)[0] < 256) - *p = PyUnicode_AS_UNICODE(arg)[0]; + *p = (char)PyUnicode_AS_UNICODE(arg)[0]; else return converterr("char < 256", arg, msgbuf, bufsize); break; @@ -823,7 +823,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, } else return converterr("string", arg, msgbuf, bufsize); - if ((Py_ssize_t)strlen(*p) != PyString_Size(arg)) + if ((Py_ssize_t)strlen(*p) != PyUnicode_GetSize(arg)) return converterr("string without null bytes", arg, msgbuf, bufsize); } @@ -899,7 +899,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, format++; } else if (*p != NULL && - (Py_ssize_t)strlen(*p) != PyString_Size(arg)) + (Py_ssize_t)strlen(*p) != PyUnicode_GetSize(arg)) return converterr( "string without null bytes or None", arg, msgbuf, bufsize); @@ -1596,7 +1596,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format, "keywords must be strings"); return cleanreturn(0, freelist); } - ks = PyString_AsString(key); + ks = PyUnicode_AsString(key); for (i = 0; i < max; i++) { if (!strcmp(ks, kwlist[i])) { match = 1; diff --git a/Python/peephole.c b/Python/peephole.c index d012d39..9f1e642 100644 --- a/Python/peephole.c +++ b/Python/peephole.c @@ -407,7 +407,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, case LOAD_NAME: case LOAD_GLOBAL: j = GETARG(codestr, i); - name = PyString_AsString(PyTuple_GET_ITEM(names, j)); + name = PyUnicode_AsString(PyTuple_GET_ITEM(names, j)); h = load_global(codestr, i, name, consts); if (h < 0) goto exitUnchanged; -- cgit v0.12