@@ -69,6 +69,12 @@ Copyright (C) 1994 Steen Lumholt.
69
69
#define USE_DEPRECATED_TOMMATH_API 1
70
70
#endif
71
71
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
+
72
78
#if !(defined(MS_WINDOWS ) || defined(__CYGWIN__ ))
73
79
#define HAVE_CREATEFILEHANDLER
74
80
#endif
@@ -489,7 +495,7 @@ unicodeFromTclString(const char *s)
489
495
static PyObject *
490
496
unicodeFromTclObj (Tcl_Obj * value )
491
497
{
492
- int len ;
498
+ Tcl_Size len ;
493
499
#if USE_TCL_UNICODE
494
500
int byteorder = NATIVE_BYTEORDER ;
495
501
const Tcl_UniChar * u = Tcl_GetUnicodeFromObj (value , & len );
@@ -517,6 +523,10 @@ class _tkinter.tktimertoken "TkttObject *" "&Tktt_Type_spec"
517
523
518
524
/**** Tkapp Object ****/
519
525
526
+ #if TK_MAJOR_VERSION >= 9
527
+ int Tcl_AppInit (Tcl_Interp * );
528
+ #endif
529
+
520
530
#ifndef WITH_APPINIT
521
531
int
522
532
Tcl_AppInit (Tcl_Interp * interp )
@@ -1142,7 +1152,7 @@ FromObj(TkappObject *tkapp, Tcl_Obj *value)
1142
1152
}
1143
1153
1144
1154
if (value -> typePtr == tkapp -> ByteArrayType ) {
1145
- int size ;
1155
+ Tcl_Size size ;
1146
1156
char * data = (char * )Tcl_GetByteArrayFromObj (value , & size );
1147
1157
return PyBytes_FromStringAndSize (data , size );
1148
1158
}
@@ -1168,8 +1178,8 @@ FromObj(TkappObject *tkapp, Tcl_Obj *value)
1168
1178
}
1169
1179
1170
1180
if (value -> typePtr == tkapp -> ListType ) {
1171
- int size ;
1172
- int i , status ;
1181
+ Tcl_Size i , size ;
1182
+ int status ;
1173
1183
PyObject * elem ;
1174
1184
Tcl_Obj * tcl_elem ;
1175
1185
@@ -1225,9 +1235,9 @@ typedef struct Tkapp_CallEvent {
1225
1235
} Tkapp_CallEvent ;
1226
1236
1227
1237
static void
1228
- Tkapp_CallDeallocArgs (Tcl_Obj * * objv , Tcl_Obj * * objStore , int objc )
1238
+ Tkapp_CallDeallocArgs (Tcl_Obj * * objv , Tcl_Obj * * objStore , Tcl_Size objc )
1229
1239
{
1230
- int i ;
1240
+ Tcl_Size i ;
1231
1241
for (i = 0 ; i < objc ; i ++ )
1232
1242
Tcl_DecrRefCount (objv [i ]);
1233
1243
if (objv != objStore )
@@ -1238,7 +1248,7 @@ Tkapp_CallDeallocArgs(Tcl_Obj** objv, Tcl_Obj** objStore, int objc)
1238
1248
interpreter thread, which may or may not be the calling thread. */
1239
1249
1240
1250
static Tcl_Obj * *
1241
- Tkapp_CallArgs (PyObject * args , Tcl_Obj * * objStore , int * pobjc )
1251
+ Tkapp_CallArgs (PyObject * args , Tcl_Obj * * objStore , Tcl_Size * pobjc )
1242
1252
{
1243
1253
Tcl_Obj * * objv = objStore ;
1244
1254
Py_ssize_t objc = 0 , i ;
@@ -1286,10 +1296,10 @@ Tkapp_CallArgs(PyObject *args, Tcl_Obj** objStore, int *pobjc)
1286
1296
Tcl_IncrRefCount (objv [i ]);
1287
1297
}
1288
1298
}
1289
- * pobjc = (int )objc ;
1299
+ * pobjc = (Tcl_Size )objc ;
1290
1300
return objv ;
1291
1301
finally :
1292
- Tkapp_CallDeallocArgs (objv , objStore , (int )objc );
1302
+ Tkapp_CallDeallocArgs (objv , objStore , (Tcl_Size )objc );
1293
1303
return NULL ;
1294
1304
}
1295
1305
@@ -1356,7 +1366,7 @@ Tkapp_CallProc(Tcl_Event *evPtr, int flags)
1356
1366
Tkapp_CallEvent * e = (Tkapp_CallEvent * )evPtr ;
1357
1367
Tcl_Obj * objStore [ARGSZ ];
1358
1368
Tcl_Obj * * objv ;
1359
- int objc ;
1369
+ Tcl_Size objc ;
1360
1370
int i ;
1361
1371
ENTER_PYTHON
1362
1372
if (e -> self -> trace && !Tkapp_Trace (e -> self , PyTuple_Pack (1 , e -> args ))) {
@@ -1412,7 +1422,7 @@ Tkapp_Call(PyObject *selfptr, PyObject *args)
1412
1422
{
1413
1423
Tcl_Obj * objStore [ARGSZ ];
1414
1424
Tcl_Obj * * objv = NULL ;
1415
- int objc , i ;
1425
+ Tcl_Size objc ;
1416
1426
PyObject * res = NULL ;
1417
1427
TkappObject * self = (TkappObject * )selfptr ;
1418
1428
int flags = TCL_EVAL_DIRECT | TCL_EVAL_GLOBAL ;
@@ -1459,6 +1469,7 @@ Tkapp_Call(PyObject *selfptr, PyObject *args)
1459
1469
{
1460
1470
TRACE (self , ("(O)" , args ));
1461
1471
1472
+ int i ;
1462
1473
objv = Tkapp_CallArgs (args , objStore , & objc );
1463
1474
if (!objv )
1464
1475
return NULL ;
@@ -2193,13 +2204,12 @@ _tkinter_tkapp_splitlist(TkappObject *self, PyObject *arg)
2193
2204
/*[clinic end generated code: output=13b51d34386d36fb input=2b2e13351e3c0b53]*/
2194
2205
{
2195
2206
char * list ;
2196
- int argc ;
2207
+ Tcl_Size argc , i ;
2197
2208
const char * * argv ;
2198
2209
PyObject * v ;
2199
- int i ;
2200
2210
2201
2211
if (PyTclObject_Check (arg )) {
2202
- int objc ;
2212
+ Tcl_Size objc ;
2203
2213
Tcl_Obj * * objv ;
2204
2214
if (Tcl_ListObjGetElements (Tkapp_Interp (self ),
2205
2215
((PyTclObject * )arg )-> value ,
0 commit comments