@@ -71,6 +71,12 @@ Copyright (C) 1994 Steen Lumholt.
71
71
#define USE_DEPRECATED_TOMMATH_API 1
72
72
#endif
73
73
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
+
74
80
#if !(defined(MS_WINDOWS ) || defined(__CYGWIN__ ))
75
81
#define HAVE_CREATEFILEHANDLER
76
82
#endif
@@ -493,7 +499,7 @@ unicodeFromTclString(const char *s)
493
499
static PyObject *
494
500
unicodeFromTclObj (Tcl_Obj * value )
495
501
{
496
- int len ;
502
+ Tcl_Size len ;
497
503
#if USE_TCL_UNICODE
498
504
int byteorder = NATIVE_BYTEORDER ;
499
505
const Tcl_UniChar * u = Tcl_GetUnicodeFromObj (value , & len );
@@ -521,6 +527,10 @@ class _tkinter.tktimertoken "TkttObject *" "&Tktt_Type_spec"
521
527
522
528
/**** Tkapp Object ****/
523
529
530
+ #if TK_MAJOR_VERSION >= 9
531
+ int Tcl_AppInit (Tcl_Interp * );
532
+ #endif
533
+
524
534
#ifndef WITH_APPINIT
525
535
int
526
536
Tcl_AppInit (Tcl_Interp * interp )
@@ -1148,7 +1158,7 @@ FromObj(TkappObject *tkapp, Tcl_Obj *value)
1148
1158
}
1149
1159
1150
1160
if (value -> typePtr == tkapp -> ByteArrayType ) {
1151
- int size ;
1161
+ Tcl_Size size ;
1152
1162
char * data = (char * )Tcl_GetByteArrayFromObj (value , & size );
1153
1163
return PyBytes_FromStringAndSize (data , size );
1154
1164
}
@@ -1174,8 +1184,8 @@ FromObj(TkappObject *tkapp, Tcl_Obj *value)
1174
1184
}
1175
1185
1176
1186
if (value -> typePtr == tkapp -> ListType ) {
1177
- int size ;
1178
- int i , status ;
1187
+ Tcl_Size i , size ;
1188
+ int status ;
1179
1189
PyObject * elem ;
1180
1190
Tcl_Obj * tcl_elem ;
1181
1191
@@ -1231,9 +1241,9 @@ typedef struct Tkapp_CallEvent {
1231
1241
} Tkapp_CallEvent ;
1232
1242
1233
1243
static void
1234
- Tkapp_CallDeallocArgs (Tcl_Obj * * objv , Tcl_Obj * * objStore , int objc )
1244
+ Tkapp_CallDeallocArgs (Tcl_Obj * * objv , Tcl_Obj * * objStore , Tcl_Size objc )
1235
1245
{
1236
- int i ;
1246
+ Tcl_Size i ;
1237
1247
for (i = 0 ; i < objc ; i ++ )
1238
1248
Tcl_DecrRefCount (objv [i ]);
1239
1249
if (objv != objStore )
@@ -1244,7 +1254,7 @@ Tkapp_CallDeallocArgs(Tcl_Obj** objv, Tcl_Obj** objStore, int objc)
1244
1254
interpreter thread, which may or may not be the calling thread. */
1245
1255
1246
1256
static Tcl_Obj * *
1247
- Tkapp_CallArgs (PyObject * args , Tcl_Obj * * objStore , int * pobjc )
1257
+ Tkapp_CallArgs (PyObject * args , Tcl_Obj * * objStore , Tcl_Size * pobjc )
1248
1258
{
1249
1259
Tcl_Obj * * objv = objStore ;
1250
1260
Py_ssize_t objc = 0 , i ;
@@ -1292,10 +1302,10 @@ Tkapp_CallArgs(PyObject *args, Tcl_Obj** objStore, int *pobjc)
1292
1302
Tcl_IncrRefCount (objv [i ]);
1293
1303
}
1294
1304
}
1295
- * pobjc = (int )objc ;
1305
+ * pobjc = (Tcl_Size )objc ;
1296
1306
return objv ;
1297
1307
finally :
1298
- Tkapp_CallDeallocArgs (objv , objStore , (int )objc );
1308
+ Tkapp_CallDeallocArgs (objv , objStore , (Tcl_Size )objc );
1299
1309
return NULL ;
1300
1310
}
1301
1311
@@ -1361,7 +1371,7 @@ Tkapp_CallProc(Tkapp_CallEvent *e, int flags)
1361
1371
{
1362
1372
Tcl_Obj * objStore [ARGSZ ];
1363
1373
Tcl_Obj * * objv ;
1364
- int objc ;
1374
+ Tcl_Size objc ;
1365
1375
int i ;
1366
1376
ENTER_PYTHON
1367
1377
if (e -> self -> trace && !Tkapp_Trace (e -> self , PyTuple_Pack (1 , e -> args ))) {
@@ -1417,7 +1427,7 @@ Tkapp_Call(PyObject *selfptr, PyObject *args)
1417
1427
{
1418
1428
Tcl_Obj * objStore [ARGSZ ];
1419
1429
Tcl_Obj * * objv = NULL ;
1420
- int objc , i ;
1430
+ Tcl_Size objc ;
1421
1431
PyObject * res = NULL ;
1422
1432
TkappObject * self = (TkappObject * )selfptr ;
1423
1433
int flags = TCL_EVAL_DIRECT | TCL_EVAL_GLOBAL ;
@@ -1464,6 +1474,7 @@ Tkapp_Call(PyObject *selfptr, PyObject *args)
1464
1474
{
1465
1475
TRACE (self , ("(O)" , args ));
1466
1476
1477
+ int i ;
1467
1478
objv = Tkapp_CallArgs (args , objStore , & objc );
1468
1479
if (!objv )
1469
1480
return NULL ;
@@ -2197,13 +2208,12 @@ _tkinter_tkapp_splitlist(TkappObject *self, PyObject *arg)
2197
2208
/*[clinic end generated code: output=13b51d34386d36fb input=2b2e13351e3c0b53]*/
2198
2209
{
2199
2210
char * list ;
2200
- int argc ;
2211
+ Tcl_Size argc , i ;
2201
2212
const char * * argv ;
2202
2213
PyObject * v ;
2203
- int i ;
2204
2214
2205
2215
if (PyTclObject_Check (arg )) {
2206
- int objc ;
2216
+ Tcl_Size objc ;
2207
2217
Tcl_Obj * * objv ;
2208
2218
if (Tcl_ListObjGetElements (Tkapp_Interp (self ),
2209
2219
((PyTclObject * )arg )-> value ,
0 commit comments