Author: walter.doerwald
Date: Fri May 25 17:46:59 2007
New Revision: 55585

Modified:
   python/branches/py3k-struni/Include/pyerrors.h
   python/branches/py3k-struni/Python/ceval.c
   python/branches/py3k-struni/Python/codecs.c
   python/branches/py3k-struni/Python/compile.c
   python/branches/py3k-struni/Python/errors.c
Log:
Change PyErr_Format() to generate a unicode string (by using
PyUnicode_FromFormatV() instead of PyString_FromFormatV()).

Change calls to PyErr_Format() to benefit from the new format
specifiers: Using %S, object instead of %s, PyString_AS_STRING(object)
with will work with unicode objects too.


Modified: python/branches/py3k-struni/Include/pyerrors.h
==============================================================================
--- python/branches/py3k-struni/Include/pyerrors.h      (original)
+++ python/branches/py3k-struni/Include/pyerrors.h      Fri May 25 17:46:59 2007
@@ -173,8 +173,7 @@
        PyObject *, Py_UNICODE *);
 #endif /* Py_WIN_WIDE_FILENAMES */
 
-PyAPI_FUNC(PyObject *) PyErr_Format(PyObject *, const char *, ...)
-                       Py_GCC_ATTRIBUTE((format(printf, 2, 3)));
+PyAPI_FUNC(PyObject *) PyErr_Format(PyObject *, const char *, ...);
 
 #ifdef MS_WINDOWS
 PyAPI_FUNC(PyObject *) PyErr_SetFromWindowsErrWithFilenameObject(

Modified: python/branches/py3k-struni/Python/ceval.c
==============================================================================
--- python/branches/py3k-struni/Python/ceval.c  (original)
+++ python/branches/py3k-struni/Python/ceval.c  Fri May 25 17:46:59 2007
@@ -2615,9 +2615,9 @@
                if (argcount > co->co_argcount) {
                        if (!(co->co_flags & CO_VARARGS)) {
                                PyErr_Format(PyExc_TypeError,
-                                   "%.200s() takes %s %d "
+                                   "%S() takes %s %d "
                                    "%spositional argument%s (%d given)",
-                                   PyString_AsString(co->co_name),
+                                   co->co_name,
                                    defcount ? "at most" : "exactly",
                                    co->co_argcount,
                                    kwcount ? "non-keyword " : "",
@@ -2649,8 +2649,8 @@
                        int j;
                        if (keyword == NULL || !(PyString_Check(keyword) || 
PyUnicode_Check(keyword))) {
                                PyErr_Format(PyExc_TypeError,
-                                   "%.200s() keywords must be strings",
-                                   PyString_AsString(co->co_name));
+                                   "%S() keywords must be strings",
+                                   co->co_name);
                                goto fail;
                        }
                        /* XXX slow -- speed up using dictionary? */
@@ -2672,10 +2672,10 @@
                        if (j >= co->co_argcount + co->co_kwonlyargcount) {
                                if (kwdict == NULL) {
                                        PyErr_Format(PyExc_TypeError,
-                                           "%.200s() got an unexpected "
-                                           "keyword argument '%.400s'",
-                                           PyString_AsString(co->co_name),
-                                           PyString_AsString(keyword));
+                                           "%S() got an unexpected "
+                                           "keyword argument '%S'",
+                                           co->co_name,
+                                           keyword);
                                        goto fail;
                                }
                                PyDict_SetItem(kwdict, keyword, value);
@@ -2683,11 +2683,11 @@
                        else {
                                if (GETLOCAL(j) != NULL) {
                                        PyErr_Format(PyExc_TypeError,
-                                            "%.200s() got multiple "
+                                            "%S() got multiple "
                                             "values for keyword "
-                                            "argument '%.400s'",
-                                            PyString_AsString(co->co_name),
-                                            PyString_AsString(keyword));
+                                            "argument '%S'",
+                                            co->co_name,
+                                            keyword);
                                        goto fail;
                                }
                                Py_INCREF(value);
@@ -2711,10 +2711,8 @@
                                        continue;
                                }
                                PyErr_Format(PyExc_TypeError,
-                                       "%.200s() needs "
-                                       "keyword-only argument %s",
-                                       PyString_AsString(co->co_name),
-                                       PyString_AsString(name));
+                                       "%S() needs keyword-only argument %S",
+                                       co->co_name, name);
                                goto fail;
                        }
                }
@@ -2723,10 +2721,10 @@
                        for (i = argcount; i < m; i++) {
                                if (GETLOCAL(i) == NULL) {
                                        PyErr_Format(PyExc_TypeError,
-                                           "%.200s() takes %s %d "
+                                           "%S() takes %s %d "
                                            "%spositional argument%s "
                                            "(%d given)",
-                                           PyString_AsString(co->co_name),
+                                           co->co_name,
                                            ((co->co_flags & CO_VARARGS) ||
                                             defcount) ? "at least"
                                                       : "exactly",
@@ -2751,8 +2749,8 @@
        else {
                if (argcount > 0 || kwcount > 0) {
                        PyErr_Format(PyExc_TypeError,
-                                    "%.200s() takes no arguments (%d given)",
-                                    PyString_AsString(co->co_name),
+                                    "%S() takes no arguments (%d given)",
+                                    co->co_name,
                                     argcount + kwcount);
                        goto fail;
                }
@@ -4021,9 +4019,7 @@
 
        x = PyObject_GetAttr(v, name);
        if (x == NULL && PyErr_ExceptionMatches(PyExc_AttributeError)) {
-               PyErr_Format(PyExc_ImportError,
-                            "cannot import name %.230s",
-                            PyString_AsString(name));
+               PyErr_Format(PyExc_ImportError, "cannot import name %S", name);
        }
        return x;
 }

Modified: python/branches/py3k-struni/Python/codecs.c
==============================================================================
--- python/branches/py3k-struni/Python/codecs.c (original)
+++ python/branches/py3k-struni/Python/codecs.c Fri May 25 17:46:59 2007
@@ -443,18 +443,13 @@
 {
     PyObject *type = PyObject_GetAttrString(exc, "__class__");
     if (type != NULL) {
-       PyObject *name = PyObject_GetAttrString(type, "__name__");
-       Py_DECREF(type);
-       if (name != NULL) {
-           PyObject *string = PyObject_Str(name);
-           Py_DECREF(name);
-           if (string != NULL) {
-               PyErr_Format(PyExc_TypeError,
-                   "don't know how to handle %.400s in error callback",
-                   PyString_AS_STRING(string));
-               Py_DECREF(string);
-           }
-       }
+        PyObject *name = PyObject_GetAttrString(type, "__name__");
+        Py_DECREF(type);
+        if (name != NULL) {
+            PyErr_Format(PyExc_TypeError,
+                         "don't know how to handle %S in error callback", 
name);
+            Py_DECREF(name);
+        }
     }
 }
 

Modified: python/branches/py3k-struni/Python/compile.c
==============================================================================
--- python/branches/py3k-struni/Python/compile.c        (original)
+++ python/branches/py3k-struni/Python/compile.c        Fri May 25 17:46:59 2007
@@ -2467,9 +2467,9 @@
                        break;
                case Del:
                        PyErr_Format(PyExc_SyntaxError,
-                                    "can not delete variable '%s' referenced "
+                                    "can not delete variable '%S' referenced "
                                     "in nested scope",
-                                    PyString_AS_STRING(name));
+                                    name);
                        Py_DECREF(mangled);
                        return 0;
                case Param:

Modified: python/branches/py3k-struni/Python/errors.c
==============================================================================
--- python/branches/py3k-struni/Python/errors.c (original)
+++ python/branches/py3k-struni/Python/errors.c Fri May 25 17:46:59 2007
@@ -54,11 +54,9 @@
 {
        if (exception != NULL &&
            !PyExceptionClass_Check(exception)) {
-               PyObject *excstr = PyObject_ReprStr8(exception);
                PyErr_Format(PyExc_SystemError,
-                            "exception %s not a BaseException subclass",
-                            PyString_AS_STRING(excstr));
-               Py_DECREF(excstr);
+                            "exception %R not a BaseException subclass",
+                            exception);
                return;
        }
        Py_XINCREF(exception);
@@ -75,7 +73,7 @@
 void
 PyErr_SetString(PyObject *exception, const char *string)
 {
-       PyObject *value = PyString_FromString(string);
+       PyObject *value = PyUnicode_FromString(string);
        PyErr_SetObject(exception, value);
        Py_XDECREF(value);
 }
@@ -528,7 +526,7 @@
        va_start(vargs);
 #endif
 
-       string = PyString_FromFormatV(format, vargs);
+       string = PyUnicode_FromFormatV(format, vargs);
        PyErr_SetObject(exception, string);
        Py_XDECREF(string);
        va_end(vargs);
_______________________________________________
Python-3000-checkins mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000-checkins

Reply via email to