]> granicus.if.org Git - python/commitdiff
Tkinter binding involving Control-spacebar raises unicode error
authorKurt B. Kaiser <kbk@shore.net>
Mon, 27 Aug 2007 01:55:21 +0000 (01:55 +0000)
committerKurt B. Kaiser <kbk@shore.net>
Mon, 27 Aug 2007 01:55:21 +0000 (01:55 +0000)
Issue1028

Modules/_tkinter.c

index c0b47c28f5407a032565076faebc5a2c598af998..507c9da8f8d04b50f07a0afaea4995c448f33e21 100644 (file)
@@ -1897,7 +1897,7 @@ static int
 PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
 {
        PythonCmd_ClientData *data = (PythonCmd_ClientData *)clientData;
-       PyObject *self, *func, *arg, *res;
+       PyObject *self, *func, *arg, *res, *s;
        int i, rv;
        Tcl_Obj *tres;
 
@@ -1914,7 +1914,13 @@ PythonCmd(ClientData clientData, Tcl_Interp *interp, int argc, char *argv[])
                return PythonCmd_Error(interp);
 
        for (i = 0; i < (argc - 1); i++) {
-               PyObject *s = PyUnicode_FromString(argv[i + 1]);
+               if (11 == (i + 1)) {  /* the %A arg is the unicode char */
+                       char *a = argv[i + 1];
+                       s = PyUnicode_FromUnicode((Py_UNICODE *) a, strlen(a));
+               }
+               else {
+                       s = PyUnicode_FromString(argv[i + 1]);
+               }
                if (!s || PyTuple_SetItem(arg, i, s)) {
                        Py_DECREF(arg);
                        return PythonCmd_Error(interp);