@@ -71,6 +71,12 @@ Copyright (C) 1994 Steen Lumholt.
7171#define USE_DEPRECATED_TOMMATH_API 1
7272#endif
7373
74+ // As suggested by https://core.tcl-lang.org/tcl/wiki?name=Migrating+C+extensions+to+Tcl+9
75+ #ifndef TCL_SIZE_MAX
76+ typedef int Tcl_Size ;
77+ #define TCL_SIZE_MAX INT_MAX
78+ #endif
79+
7480#if !(defined(MS_WINDOWS ) || defined(__CYGWIN__ ))
7581#define HAVE_CREATEFILEHANDLER
7682#endif
@@ -493,7 +499,7 @@ unicodeFromTclString(const char *s)
493499static PyObject *
494500unicodeFromTclObj (Tcl_Obj * value )
495501{
496- int len ;
502+ Tcl_Size len ;
497503#if USE_TCL_UNICODE
498504 int byteorder = NATIVE_BYTEORDER ;
499505 const Tcl_UniChar * u = Tcl_GetUnicodeFromObj (value , & len );
@@ -521,6 +527,10 @@ class _tkinter.tktimertoken "TkttObject *" "&Tktt_Type_spec"
521527
522528/**** Tkapp Object ****/
523529
530+ #if TK_MAJOR_VERSION >= 9
531+ int Tcl_AppInit (Tcl_Interp * );
532+ #endif
533+
524534#ifndef WITH_APPINIT
525535int
526536Tcl_AppInit (Tcl_Interp * interp )
@@ -1148,7 +1158,7 @@ FromObj(TkappObject *tkapp, Tcl_Obj *value)
11481158 }
11491159
11501160 if (value -> typePtr == tkapp -> ByteArrayType ) {
1151- int size ;
1161+ Tcl_Size size ;
11521162 char * data = (char * )Tcl_GetByteArrayFromObj (value , & size );
11531163 return PyBytes_FromStringAndSize (data , size );
11541164 }
@@ -1174,8 +1184,8 @@ FromObj(TkappObject *tkapp, Tcl_Obj *value)
11741184 }
11751185
11761186 if (value -> typePtr == tkapp -> ListType ) {
1177- int size ;
1178- int i , status ;
1187+ Tcl_Size i , size ;
1188+ int status ;
11791189 PyObject * elem ;
11801190 Tcl_Obj * tcl_elem ;
11811191
@@ -1231,9 +1241,9 @@ typedef struct Tkapp_CallEvent {
12311241} Tkapp_CallEvent ;
12321242
12331243static void
1234- Tkapp_CallDeallocArgs (Tcl_Obj * * objv , Tcl_Obj * * objStore , int objc )
1244+ Tkapp_CallDeallocArgs (Tcl_Obj * * objv , Tcl_Obj * * objStore , Tcl_Size objc )
12351245{
1236- int i ;
1246+ Tcl_Size i ;
12371247 for (i = 0 ; i < objc ; i ++ )
12381248 Tcl_DecrRefCount (objv [i ]);
12391249 if (objv != objStore )
@@ -1244,7 +1254,7 @@ Tkapp_CallDeallocArgs(Tcl_Obj** objv, Tcl_Obj** objStore, int objc)
12441254 interpreter thread, which may or may not be the calling thread. */
12451255
12461256static Tcl_Obj * *
1247- Tkapp_CallArgs (PyObject * args , Tcl_Obj * * objStore , int * pobjc )
1257+ Tkapp_CallArgs (PyObject * args , Tcl_Obj * * objStore , Tcl_Size * pobjc )
12481258{
12491259 Tcl_Obj * * objv = objStore ;
12501260 Py_ssize_t objc = 0 , i ;
@@ -1292,10 +1302,10 @@ Tkapp_CallArgs(PyObject *args, Tcl_Obj** objStore, int *pobjc)
12921302 Tcl_IncrRefCount (objv [i ]);
12931303 }
12941304 }
1295- * pobjc = (int )objc ;
1305+ * pobjc = (Tcl_Size )objc ;
12961306 return objv ;
12971307finally :
1298- Tkapp_CallDeallocArgs (objv , objStore , (int )objc );
1308+ Tkapp_CallDeallocArgs (objv , objStore , (Tcl_Size )objc );
12991309 return NULL ;
13001310}
13011311
@@ -1361,7 +1371,7 @@ Tkapp_CallProc(Tkapp_CallEvent *e, int flags)
13611371{
13621372 Tcl_Obj * objStore [ARGSZ ];
13631373 Tcl_Obj * * objv ;
1364- int objc ;
1374+ Tcl_Size objc ;
13651375 int i ;
13661376 ENTER_PYTHON
13671377 if (e -> self -> trace && !Tkapp_Trace (e -> self , PyTuple_Pack (1 , e -> args ))) {
@@ -1417,7 +1427,7 @@ Tkapp_Call(PyObject *selfptr, PyObject *args)
14171427{
14181428 Tcl_Obj * objStore [ARGSZ ];
14191429 Tcl_Obj * * objv = NULL ;
1420- int objc , i ;
1430+ Tcl_Size objc ;
14211431 PyObject * res = NULL ;
14221432 TkappObject * self = (TkappObject * )selfptr ;
14231433 int flags = TCL_EVAL_DIRECT | TCL_EVAL_GLOBAL ;
@@ -1464,6 +1474,7 @@ Tkapp_Call(PyObject *selfptr, PyObject *args)
14641474 {
14651475 TRACE (self , ("(O)" , args ));
14661476
1477+ int i ;
14671478 objv = Tkapp_CallArgs (args , objStore , & objc );
14681479 if (!objv )
14691480 return NULL ;
@@ -2197,13 +2208,12 @@ _tkinter_tkapp_splitlist(TkappObject *self, PyObject *arg)
21972208/*[clinic end generated code: output=13b51d34386d36fb input=2b2e13351e3c0b53]*/
21982209{
21992210 char * list ;
2200- int argc ;
2211+ Tcl_Size argc , i ;
22012212 const char * * argv ;
22022213 PyObject * v ;
2203- int i ;
22042214
22052215 if (PyTclObject_Check (arg )) {
2206- int objc ;
2216+ Tcl_Size objc ;
22072217 Tcl_Obj * * objv ;
22082218 if (Tcl_ListObjGetElements (Tkapp_Interp (self ),
22092219 ((PyTclObject * )arg )-> value ,
0 commit comments