#define USE_DEPRECATED_TOMMATH_API 1
#endif
+// As suggested by https://core.tcl-lang.org/tcl/wiki?name=Migrating+C+extensions+to+Tcl+9
+#ifndef TCL_SIZE_MAX
+typedef int Tcl_Size;
+#define TCL_SIZE_MAX INT_MAX
+#endif
+
#if !(defined(MS_WINDOWS) || defined(__CYGWIN__))
#define HAVE_CREATEFILEHANDLER
#endif
static PyObject *
unicodeFromTclObj(Tcl_Obj *value)
{
- int len;
+ Tcl_Size len;
#if USE_TCL_UNICODE
int byteorder = NATIVE_BYTEORDER;
const Tcl_UniChar *u = Tcl_GetUnicodeFromObj(value, &len);
/**** Tkapp Object ****/
+#if TK_MAJOR_VERSION >= 9
+int Tcl_AppInit(Tcl_Interp *);
+#endif
+
#ifndef WITH_APPINIT
int
Tcl_AppInit(Tcl_Interp *interp)
}
if (value->typePtr == tkapp->ByteArrayType) {
- int size;
+ Tcl_Size size;
char *data = (char*)Tcl_GetByteArrayFromObj(value, &size);
return PyBytes_FromStringAndSize(data, size);
}
}
if (value->typePtr == tkapp->ListType) {
- int size;
- int i, status;
+ Tcl_Size i, size;
+ int status;
PyObject *elem;
Tcl_Obj *tcl_elem;
} Tkapp_CallEvent;
static void
-Tkapp_CallDeallocArgs(Tcl_Obj** objv, Tcl_Obj** objStore, int objc)
+Tkapp_CallDeallocArgs(Tcl_Obj** objv, Tcl_Obj** objStore, Tcl_Size objc)
{
- int i;
+ Tcl_Size i;
for (i = 0; i < objc; i++)
Tcl_DecrRefCount(objv[i]);
if (objv != objStore)
interpreter thread, which may or may not be the calling thread. */
static Tcl_Obj**
-Tkapp_CallArgs(PyObject *args, Tcl_Obj** objStore, int *pobjc)
+Tkapp_CallArgs(PyObject *args, Tcl_Obj** objStore, Tcl_Size *pobjc)
{
Tcl_Obj **objv = objStore;
Py_ssize_t objc = 0, i;
Tcl_IncrRefCount(objv[i]);
}
}
- *pobjc = (int)objc;
+ *pobjc = (Tcl_Size)objc;
return objv;
finally:
- Tkapp_CallDeallocArgs(objv, objStore, (int)objc);
+ Tkapp_CallDeallocArgs(objv, objStore, (Tcl_Size)objc);
return NULL;
}
Tkapp_CallEvent *e = (Tkapp_CallEvent *)evPtr;
Tcl_Obj *objStore[ARGSZ];
Tcl_Obj **objv;
- int objc;
+ Tcl_Size objc;
int i;
ENTER_PYTHON
if (e->self->trace && !Tkapp_Trace(e->self, PyTuple_Pack(1, e->args))) {
{
Tcl_Obj *objStore[ARGSZ];
Tcl_Obj **objv = NULL;
- int objc, i;
+ Tcl_Size objc;
PyObject *res = NULL;
TkappObject *self = (TkappObject*)selfptr;
int flags = TCL_EVAL_DIRECT | TCL_EVAL_GLOBAL;
{
TRACE(self, ("(O)", args));
+ int i;
objv = Tkapp_CallArgs(args, objStore, &objc);
if (!objv)
return NULL;
/*[clinic end generated code: output=13b51d34386d36fb input=2b2e13351e3c0b53]*/
{
char *list;
- int argc;
+ Tcl_Size argc, i;
const char **argv;
PyObject *v;
- int i;
if (PyTclObject_Check(arg)) {
- int objc;
+ Tcl_Size objc;
Tcl_Obj **objv;
if (Tcl_ListObjGetElements(Tkapp_Interp(self),
((PyTclObject*)arg)->value,