[Python-checkins] python/dist/src/Modules _tkinter.c,1.155,1.156
loewis@users.sourceforge.net
loewis@users.sourceforge.net
Wed, 30 Apr 2003 22:47:03 -0700
Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv1108
Modified Files:
_tkinter.c
Log Message:
Convert tcl objects to strings in getvar/setvar. Fixes #730506.
Index: _tkinter.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/_tkinter.c,v
retrieving revision 1.155
retrieving revision 1.156
diff -C2 -d -r1.155 -r1.156
*** _tkinter.c 16 Apr 2003 20:34:55 -0000 1.155
--- _tkinter.c 1 May 2003 05:47:00 -0000 1.156
***************
*** 743,746 ****
--- 743,752 ----
}
+ static char*
+ PyTclObject_TclString(PyObject *self)
+ {
+ return Tcl_GetString(((PyTclObject*)self)->value);
+ }
+
/* Like _str, but create Unicode if necessary. */
PyDoc_STRVAR(PyTclObject_string__doc__,
***************
*** 1467,1470 ****
--- 1473,1492 ----
} VarEvent;
+ static int
+ varname_converter(PyObject *in, void *_out)
+ {
+ char **out = (char**)_out;
+ if (PyString_Check(in)) {
+ *out = PyString_AsString(in);
+ return 1;
+ }
+ if (PyTclObject_Check(in)) {
+ *out = PyTclObject_TclString(in);
+ return 1;
+ }
+ /* XXX: Should give diagnostics. */
+ return 0;
+ }
+
void
var_perform(VarEvent *ev)
***************
*** 1543,1547 ****
Tcl_Obj *newval, *ok;
! if (PyArg_ParseTuple(args, "sO:setvar", &name1, &newValue)) {
/* XXX Acquire tcl lock??? */
newval = AsObj(newValue);
--- 1565,1570 ----
Tcl_Obj *newval, *ok;
! if (PyArg_ParseTuple(args, "O&O:setvar",
! varname_converter, &name1, &newValue)) {
/* XXX Acquire tcl lock??? */
newval = AsObj(newValue);
***************
*** 1605,1609 ****
Tcl_Obj *tres;
! if (!PyArg_ParseTuple(args, "s|s:getvar", &name1, &name2))
return NULL;
--- 1628,1633 ----
Tcl_Obj *tres;
! if (!PyArg_ParseTuple(args, "O&|s:getvar",
! varname_converter, &name1, &name2))
return NULL;