summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1994-06-27 07:59:42 (GMT)
committerGuido van Rossum <guido@python.org>1994-06-27 07:59:42 (GMT)
commit7687522309644cfc1887c01150e2711a7be237f6 (patch)
tree0c9f3cf6945dc8234f8d7beaa0a1e73021a402c8 /Modules
parent535cf0cbe218c81f3b70bfa2fe7ef45636713ad3 (diff)
downloadcpython-7687522309644cfc1887c01150e2711a7be237f6.zip
cpython-7687522309644cfc1887c01150e2711a7be237f6.tar.gz
cpython-7687522309644cfc1887c01150e2711a7be237f6.tar.bz2
* tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
* tkintermodule.c (FileHandler): Make arg a tuple; bug found by <tnb2d@cs.virginia.edu>. Call the Python file handler function with (file, mask) argument. Fix a few of my refcnt bugs.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_tkinter.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 2bb7060..31d127f 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -254,13 +254,11 @@ Tkapp_New (screenName, baseName, className, interactive)
else
Tcl_SetVar (v->interp, "tcl_interactive", "0", TCL_GLOBAL_ONLY);
-#ifndef WITH_APPINIT
if (Tcl_AppInit (v->interp) != TCL_OK)
{
PyErr_SetString (Tkinter_TclError, "Tcl_AppInit failed"); /* XXX */
return NULL;
}
-#endif /* !WITH_APPINIT */
return v;
}
@@ -768,15 +766,15 @@ Tkapp_DeleteCommand (self, args)
void
FileHandler (clientData, mask)
- ClientData clientData; /* Is: func */
+ ClientData clientData; /* Is: (func, file) */
int mask;
{
- PyObject *func;
- PyObject *arg, *res;
+ PyObject *func, *file, *arg, *res;
- func = (PyObject *) clientData;
+ func = PyTuple_GetItem ((PyObject *) clientData, 0);
+ file = PyTuple_GetItem ((PyObject *) clientData, 1);
- arg = PyInt_FromLong ((long) mask);
+ arg = Py_BuildValue ("(Oi)", file, (long) mask);
res = PyEval_CallObject (func, arg);
Py_DECREF (arg);
if (res == NULL)
@@ -784,6 +782,7 @@ FileHandler (clientData, mask)
errorInCmd = 1;
PyErr_GetAndClear (&excInCmd, &valInCmd);
}
+ Py_DECREF (res);
}
static PyObject *
@@ -791,10 +790,8 @@ Tkapp_CreateFileHandler (self, args)
PyObject *self;
PyObject *args; /* Is (file, mask, func) */
{
- PyObject *file;
- int mask;
- PyObject *func;
- int id;
+ PyObject *file, *func, *data;
+ int mask, id;
if (!PyArg_Parse (args, "(OiO)", &file, &mask, &func))
return NULL;
@@ -805,10 +802,13 @@ Tkapp_CreateFileHandler (self, args)
return NULL;
}
+ /* ClientData is: (func, file) */
+ data = Py_BuildValue ("(OO)", func, file);
+
id = fileno (PyFile_AsFile (file));
- Py_DECREF (file);
- Tk_CreateFileHandler (id, mask, FileHandler, (ClientData) func);
+ Tk_CreateFileHandler (id, mask, FileHandler, (ClientData) data);
/* XXX fileHandlerDict */
+
Py_INCREF (Py_None);
return Py_None;
}