@@ -69,6 +69,12 @@ Copyright (C) 1994 Steen Lumholt.
6969#define USE_DEPRECATED_TOMMATH_API 1
7070#endif
7171
72+ // As suggested by https://core.tcl-lang.org/tcl/wiki?name=Migrating+C+extensions+to+Tcl+9
73+ #ifndef TCL_SIZE_MAX
74+ typedef int Tcl_Size ;
75+ #define TCL_SIZE_MAX INT_MAX
76+ #endif
77+
7278#if !(defined(MS_WINDOWS ) || defined(__CYGWIN__ ))
7379#define HAVE_CREATEFILEHANDLER
7480#endif
@@ -489,7 +495,7 @@ unicodeFromTclString(const char *s)
489495static PyObject *
490496unicodeFromTclObj (Tcl_Obj * value )
491497{
492- int len ;
498+ Tcl_Size len ;
493499#if USE_TCL_UNICODE
494500 int byteorder = NATIVE_BYTEORDER ;
495501 const Tcl_UniChar * u = Tcl_GetUnicodeFromObj (value , & len );
@@ -517,6 +523,10 @@ class _tkinter.tktimertoken "TkttObject *" "&Tktt_Type_spec"
517523
518524/**** Tkapp Object ****/
519525
526+ #if TK_MAJOR_VERSION >= 9
527+ int Tcl_AppInit (Tcl_Interp * );
528+ #endif
529+
520530#ifndef WITH_APPINIT
521531int
522532Tcl_AppInit (Tcl_Interp * interp )
@@ -1142,7 +1152,7 @@ FromObj(TkappObject *tkapp, Tcl_Obj *value)
11421152 }
11431153
11441154 if (value -> typePtr == tkapp -> ByteArrayType ) {
1145- int size ;
1155+ Tcl_Size size ;
11461156 char * data = (char * )Tcl_GetByteArrayFromObj (value , & size );
11471157 return PyBytes_FromStringAndSize (data , size );
11481158 }
@@ -1168,8 +1178,8 @@ FromObj(TkappObject *tkapp, Tcl_Obj *value)
11681178 }
11691179
11701180 if (value -> typePtr == tkapp -> ListType ) {
1171- int size ;
1172- int i , status ;
1181+ Tcl_Size i , size ;
1182+ int status ;
11731183 PyObject * elem ;
11741184 Tcl_Obj * tcl_elem ;
11751185
@@ -1225,9 +1235,9 @@ typedef struct Tkapp_CallEvent {
12251235} Tkapp_CallEvent ;
12261236
12271237static void
1228- Tkapp_CallDeallocArgs (Tcl_Obj * * objv , Tcl_Obj * * objStore , int objc )
1238+ Tkapp_CallDeallocArgs (Tcl_Obj * * objv , Tcl_Obj * * objStore , Tcl_Size objc )
12291239{
1230- int i ;
1240+ Tcl_Size i ;
12311241 for (i = 0 ; i < objc ; i ++ )
12321242 Tcl_DecrRefCount (objv [i ]);
12331243 if (objv != objStore )
@@ -1238,7 +1248,7 @@ Tkapp_CallDeallocArgs(Tcl_Obj** objv, Tcl_Obj** objStore, int objc)
12381248 interpreter thread, which may or may not be the calling thread. */
12391249
12401250static Tcl_Obj * *
1241- Tkapp_CallArgs (PyObject * args , Tcl_Obj * * objStore , int * pobjc )
1251+ Tkapp_CallArgs (PyObject * args , Tcl_Obj * * objStore , Tcl_Size * pobjc )
12421252{
12431253 Tcl_Obj * * objv = objStore ;
12441254 Py_ssize_t objc = 0 , i ;
@@ -1286,10 +1296,10 @@ Tkapp_CallArgs(PyObject *args, Tcl_Obj** objStore, int *pobjc)
12861296 Tcl_IncrRefCount (objv [i ]);
12871297 }
12881298 }
1289- * pobjc = (int )objc ;
1299+ * pobjc = (Tcl_Size )objc ;
12901300 return objv ;
12911301finally :
1292- Tkapp_CallDeallocArgs (objv , objStore , (int )objc );
1302+ Tkapp_CallDeallocArgs (objv , objStore , (Tcl_Size )objc );
12931303 return NULL ;
12941304}
12951305
@@ -1356,7 +1366,7 @@ Tkapp_CallProc(Tcl_Event *evPtr, int flags)
13561366 Tkapp_CallEvent * e = (Tkapp_CallEvent * )evPtr ;
13571367 Tcl_Obj * objStore [ARGSZ ];
13581368 Tcl_Obj * * objv ;
1359- int objc ;
1369+ Tcl_Size objc ;
13601370 int i ;
13611371 ENTER_PYTHON
13621372 if (e -> self -> trace && !Tkapp_Trace (e -> self , PyTuple_Pack (1 , e -> args ))) {
@@ -1412,7 +1422,7 @@ Tkapp_Call(PyObject *selfptr, PyObject *args)
14121422{
14131423 Tcl_Obj * objStore [ARGSZ ];
14141424 Tcl_Obj * * objv = NULL ;
1415- int objc , i ;
1425+ Tcl_Size objc ;
14161426 PyObject * res = NULL ;
14171427 TkappObject * self = (TkappObject * )selfptr ;
14181428 int flags = TCL_EVAL_DIRECT | TCL_EVAL_GLOBAL ;
@@ -1459,6 +1469,7 @@ Tkapp_Call(PyObject *selfptr, PyObject *args)
14591469 {
14601470 TRACE (self , ("(O)" , args ));
14611471
1472+ int i ;
14621473 objv = Tkapp_CallArgs (args , objStore , & objc );
14631474 if (!objv )
14641475 return NULL ;
@@ -2193,13 +2204,12 @@ _tkinter_tkapp_splitlist(TkappObject *self, PyObject *arg)
21932204/*[clinic end generated code: output=13b51d34386d36fb input=2b2e13351e3c0b53]*/
21942205{
21952206 char * list ;
2196- int argc ;
2207+ Tcl_Size argc , i ;
21972208 const char * * argv ;
21982209 PyObject * v ;
2199- int i ;
22002210
22012211 if (PyTclObject_Check (arg )) {
2202- int objc ;
2212+ Tcl_Size objc ;
22032213 Tcl_Obj * * objv ;
22042214 if (Tcl_ListObjGetElements (Tkapp_Interp (self ),
22052215 ((PyTclObject * )arg )-> value ,
0 commit comments