@@ -589,11 +589,10 @@ Tkapp_New(const char *screenName, const char *className,
589
589
int interactive , int wantobjects , int wantTk , int sync ,
590
590
const char * use )
591
591
{
592
- PyTypeObject * type = (PyTypeObject * )Tkapp_Type ;
593
592
TkappObject * v ;
594
593
char * argv0 ;
595
594
596
- v = (TkappObject * ) type -> tp_alloc ( type , 0 );
595
+ v = PyObject_New (TkappObject , ( PyTypeObject * ) Tkapp_Type );
597
596
if (v == NULL )
598
597
return NULL ;
599
598
@@ -2746,10 +2745,9 @@ _tkinter_tktimertoken_deletetimerhandler_impl(TkttObject *self)
2746
2745
static TkttObject *
2747
2746
Tktt_New (PyObject * func )
2748
2747
{
2749
- PyTypeObject * type = (PyTypeObject * )Tktt_Type ;
2750
2748
TkttObject * v ;
2751
2749
2752
- v = (TkttObject * ) type -> tp_alloc ( type , 0 );
2750
+ v = PyObject_New (TkttObject , ( PyTypeObject * ) Tktt_Type );
2753
2751
if (v == NULL )
2754
2752
return NULL ;
2755
2753
@@ -2760,31 +2758,17 @@ Tktt_New(PyObject *func)
2760
2758
return (TkttObject * )Py_NewRef (v );
2761
2759
}
2762
2760
2763
- static int
2764
- Tktt_Clear (PyObject * op )
2765
- {
2766
- TkttObject * self = TkttObject_CAST (op );
2767
- Py_CLEAR (self -> func );
2768
- return 0 ;
2769
- }
2770
-
2771
2761
static void
2772
- Tktt_Dealloc (PyObject * op )
2762
+ Tktt_Dealloc (PyObject * self )
2773
2763
{
2774
- PyTypeObject * tp = Py_TYPE (op );
2775
- PyObject_GC_UnTrack (op );
2776
- (void )Tktt_Clear (op );
2777
- tp -> tp_free (op );
2778
- Py_DECREF (tp );
2779
- }
2764
+ TkttObject * v = TkttObject_CAST (self );
2765
+ PyObject * func = v -> func ;
2766
+ PyObject * tp = (PyObject * ) Py_TYPE (self );
2780
2767
2781
- static int
2782
- Tktt_Traverse (PyObject * op , visitproc visit , void * arg )
2783
- {
2784
- TkttObject * self = TkttObject_CAST (op );
2785
- Py_VISIT (Py_TYPE (op ));
2786
- Py_VISIT (self -> func );
2787
- return 0 ;
2768
+ Py_XDECREF (func );
2769
+
2770
+ PyObject_Free (self );
2771
+ Py_DECREF (tp );
2788
2772
}
2789
2773
2790
2774
static PyObject *
@@ -3077,38 +3061,21 @@ _tkinter_tkapp_willdispatch_impl(TkappObject *self)
3077
3061
3078
3062
/**** Tkapp Type Methods ****/
3079
3063
3080
- static int
3081
- Tkapp_Clear (PyObject * op )
3082
- {
3083
- TkappObject * self = TkappObject_CAST (op );
3084
- Py_CLEAR (self -> trace );
3085
- return 0 ;
3086
- }
3087
-
3088
3064
static void
3089
3065
Tkapp_Dealloc (PyObject * op )
3090
3066
{
3091
- PyTypeObject * tp = Py_TYPE (op );
3092
- PyObject_GC_UnTrack (op );
3093
3067
TkappObject * self = TkappObject_CAST (op );
3068
+ PyTypeObject * tp = Py_TYPE (self );
3094
3069
/*CHECK_TCL_APPARTMENT;*/
3095
3070
ENTER_TCL
3096
3071
Tcl_DeleteInterp (Tkapp_Interp (self ));
3097
3072
LEAVE_TCL
3098
- ( void ) Tkapp_Clear ( op );
3099
- tp -> tp_free (self );
3073
+ Py_XDECREF ( self -> trace );
3074
+ PyObject_Free (self );
3100
3075
Py_DECREF (tp );
3101
3076
DisableEventHook ();
3102
3077
}
3103
3078
3104
- static int
3105
- Tkapp_Traverse (PyObject * op , visitproc visit , void * arg )
3106
- {
3107
- TkappObject * self = TkappObject_CAST (op );
3108
- Py_VISIT (Py_TYPE (op ));
3109
- Py_VISIT (self -> trace );
3110
- return 0 ;
3111
- }
3112
3079
3113
3080
3114
3081
/**** Tkinter Module ****/
@@ -3296,9 +3263,7 @@ static PyMethodDef Tktt_methods[] =
3296
3263
};
3297
3264
3298
3265
static PyType_Slot Tktt_Type_slots [] = {
3299
- {Py_tp_clear , Tktt_Clear },
3300
3266
{Py_tp_dealloc , Tktt_Dealloc },
3301
- {Py_tp_traverse , Tktt_Traverse },
3302
3267
{Py_tp_repr , Tktt_Repr },
3303
3268
{Py_tp_methods , Tktt_methods },
3304
3269
{0 , 0 }
@@ -3311,7 +3276,6 @@ static PyType_Spec Tktt_Type_spec = {
3311
3276
Py_TPFLAGS_DEFAULT
3312
3277
| Py_TPFLAGS_DISALLOW_INSTANTIATION
3313
3278
| Py_TPFLAGS_IMMUTABLETYPE
3314
- | Py_TPFLAGS_HAVE_GC
3315
3279
),
3316
3280
.slots = Tktt_Type_slots ,
3317
3281
};
@@ -3358,9 +3322,7 @@ static PyMethodDef Tkapp_methods[] =
3358
3322
};
3359
3323
3360
3324
static PyType_Slot Tkapp_Type_slots [] = {
3361
- {Py_tp_clear , Tkapp_Clear },
3362
3325
{Py_tp_dealloc , Tkapp_Dealloc },
3363
- {Py_tp_traverse , Tkapp_Traverse },
3364
3326
{Py_tp_methods , Tkapp_methods },
3365
3327
{0 , 0 }
3366
3328
};
@@ -3373,7 +3335,6 @@ static PyType_Spec Tkapp_Type_spec = {
3373
3335
Py_TPFLAGS_DEFAULT
3374
3336
| Py_TPFLAGS_DISALLOW_INSTANTIATION
3375
3337
| Py_TPFLAGS_IMMUTABLETYPE
3376
- | Py_TPFLAGS_HAVE_GC
3377
3338
),
3378
3339
.slots = Tkapp_Type_slots ,
3379
3340
};
0 commit comments