From d9c635b40f585244047e875ec066c04a97d4ed47 Mon Sep 17 00:00:00 2001 From: "jan.nijtmans" Date: Tue, 10 Oct 2023 11:27:17 +0000 Subject: Proposed fix for [d96974d99d], which should work with Tcl 8.6, 8.7 and 9.0 --- generic/tkBusy.c | 8 ++++---- generic/tkCanvas.c | 2 +- generic/tkEntry.c | 2 +- generic/tkFrame.c | 2 +- generic/tkGrid.c | 2 +- generic/tkImage.c | 7 ++++--- generic/tkListbox.c | 2 +- generic/tkMenu.c | 8 ++++---- generic/tkOldConfig.c | 4 ++-- generic/tkPack.c | 2 +- generic/tkSquare.c | 2 +- generic/ttk/ttkWidget.c | 2 +- 12 files changed, 22 insertions(+), 21 deletions(-) diff --git a/generic/tkBusy.c b/generic/tkBusy.c index 5c5fb85..1f00656 100644 --- a/generic/tkBusy.c +++ b/generic/tkBusy.c @@ -137,7 +137,7 @@ BusyCustodyProc( busyPtr); TkpHideBusyWindow(busyPtr); busyPtr->tkBusy = NULL; - Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)DestroyBusy); + Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)(void *)DestroyBusy); } /* @@ -262,7 +262,7 @@ RefWinEventProc( * Arrange for the busy structure to be removed at a proper time. */ - Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)DestroyBusy); + Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)(void *)DestroyBusy); break; case ConfigureNotify: @@ -383,7 +383,7 @@ BusyEventProc( if (eventPtr->type == DestroyNotify) { busyPtr->tkBusy = NULL; - Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)DestroyBusy); + Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)(void *)DestroyBusy); } } @@ -901,7 +901,7 @@ Tk_BusyObjCmd( return TCL_ERROR; } TkpHideBusyWindow(busyPtr); - Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)DestroyBusy); + Tcl_EventuallyFree(busyPtr, (Tcl_FreeProc *)(void *)DestroyBusy); return TCL_OK; case BUSY_HOLD: diff --git a/generic/tkCanvas.c b/generic/tkCanvas.c index b80c197..6aff310 100644 --- a/generic/tkCanvas.c +++ b/generic/tkCanvas.c @@ -2730,7 +2730,7 @@ CanvasEventProc( if (canvasPtr->flags & REDRAW_PENDING) { Tcl_CancelIdleCall(DisplayCanvas, canvasPtr); } - Tcl_EventuallyFree(canvasPtr, (Tcl_FreeProc *) DestroyCanvas); + Tcl_EventuallyFree(canvasPtr, (Tcl_FreeProc *)(void *)DestroyCanvas); } else if (eventPtr->type == ConfigureNotify) { canvasPtr->flags |= UPDATE_SCROLLBARS; diff --git a/generic/tkEntry.c b/generic/tkEntry.c index 86b79ac..19d0dff 100644 --- a/generic/tkEntry.c +++ b/generic/tkEntry.c @@ -2498,7 +2498,7 @@ EntryEventProc( if (entryPtr->flags & REDRAW_PENDING) { Tcl_CancelIdleCall(DisplayEntry, clientData); } - Tcl_EventuallyFree(clientData, (Tcl_FreeProc *) DestroyEntry); + Tcl_EventuallyFree(clientData, (Tcl_FreeProc *)(void *)DestroyEntry); } break; case ConfigureNotify: diff --git a/generic/tkFrame.c b/generic/tkFrame.c index 4d69c16..7a5e51f 100644 --- a/generic/tkFrame.c +++ b/generic/tkFrame.c @@ -1676,7 +1676,7 @@ FrameEventProc( Tcl_CancelIdleCall(DisplayFrame, framePtr); } Tcl_CancelIdleCall(MapFrame, framePtr); - Tcl_EventuallyFree(framePtr, (Tcl_FreeProc *) DestroyFrame); + Tcl_EventuallyFree(framePtr, (Tcl_FreeProc *)(void *)DestroyFrame); } else if (eventPtr->type == FocusIn) { if (eventPtr->xfocus.detail != NotifyInferior) { framePtr->flags |= GOT_FOCUS; diff --git a/generic/tkGrid.c b/generic/tkGrid.c index ac6b59b..549a313 100644 --- a/generic/tkGrid.c +++ b/generic/tkGrid.c @@ -2890,7 +2890,7 @@ GridStructureProc( Tcl_CancelIdleCall(ArrangeGrid, gridPtr); } gridPtr->tkwin = NULL; - Tcl_EventuallyFree(gridPtr, (Tcl_FreeProc *)DestroyGrid); + Tcl_EventuallyFree(gridPtr, (Tcl_FreeProc *)(void *)DestroyGrid); } else if (eventPtr->type == MapNotify) { if ((gridPtr->contentPtr != NULL) && !(gridPtr->flags & REQUESTED_RELAYOUT)) { diff --git a/generic/tkImage.c b/generic/tkImage.c index 8cd5519..5858586 100644 --- a/generic/tkImage.c +++ b/generic/tkImage.c @@ -86,7 +86,7 @@ static Tcl_ThreadDataKey dataKey; */ static void ImageTypeThreadExitProc(ClientData clientData); -static void DeleteImage(ImageModel *modelPtr); +static void DeleteImage(void *blockPtr); static void EventuallyDeleteImage(ImageModel *modelPtr, int forgetImageHashNow); @@ -958,10 +958,11 @@ Tk_DeleteImage( static void DeleteImage( - ImageModel *modelPtr) /* Pointer to main data structure for image. */ + void *blockPtr) /* Pointer to main data structure for image. */ { Image *imagePtr; Tk_ImageType *typePtr; + ImageModel *modelPtr = (ImageModel *) blockPtr; typePtr = modelPtr->typePtr; modelPtr->typePtr = NULL; @@ -1015,7 +1016,7 @@ EventuallyDeleteImage( } if (!modelPtr->deleted) { modelPtr->deleted = 1; - Tcl_EventuallyFree(modelPtr, (Tcl_FreeProc *) DeleteImage); + Tcl_EventuallyFree(modelPtr, (Tcl_FreeProc *)(void *)DeleteImage); } } diff --git a/generic/tkListbox.c b/generic/tkListbox.c index 64b16ee..ca3280e 100644 --- a/generic/tkListbox.c +++ b/generic/tkListbox.c @@ -2619,7 +2619,7 @@ ListboxEventProc( if (listPtr->flags & REDRAW_PENDING) { Tcl_CancelIdleCall(DisplayListbox, clientData); } - Tcl_EventuallyFree(clientData, (Tcl_FreeProc *) DestroyListbox); + Tcl_EventuallyFree(clientData, (Tcl_FreeProc *)(void *)DestroyListbox); } } else if (eventPtr->type == ConfigureNotify) { int vertSpace; diff --git a/generic/tkMenu.c b/generic/tkMenu.c index 95a3b95..e0d9a1a 100644 --- a/generic/tkMenu.c +++ b/generic/tkMenu.c @@ -1177,7 +1177,7 @@ DestroyMenuInstance( */ Tcl_EventuallyFree(menuPtr->entries[i], - (Tcl_FreeProc*)DestroyMenuEntry); + (Tcl_FreeProc*)(void *)DestroyMenuEntry); menuPtr->numEntries = i; } if (menuPtr->entries != NULL) { @@ -1617,7 +1617,7 @@ ConfigureMenu( } else if ((menuListPtr->numEntries > 0) && (menuListPtr->entries[0]->type == TEAROFF_ENTRY)) { - Tcl_EventuallyFree(menuListPtr->entries[0], (Tcl_FreeProc *) DestroyMenuEntry); + Tcl_EventuallyFree(menuListPtr->entries[0], (Tcl_FreeProc *)(void *)DestroyMenuEntry); for (i = 0; i < menuListPtr->numEntries - 1; i++) { menuListPtr->entries[i] = menuListPtr->entries[i + 1]; @@ -2386,7 +2386,7 @@ MenuAddOrInsert( errorMenuPtr != NULL; errorMenuPtr = errorMenuPtr->nextInstancePtr) { Tcl_EventuallyFree(errorMenuPtr->entries[index], - (Tcl_FreeProc *) DestroyMenuEntry); + (Tcl_FreeProc *)(void *)DestroyMenuEntry); for (i = index; i < errorMenuPtr->numEntries - 1; i++) { errorMenuPtr->entries[i] = errorMenuPtr->entries[i + 1]; errorMenuPtr->entries[i]->index = i; @@ -3521,7 +3521,7 @@ DeleteMenuCloneEntries( for (menuListPtr = menuPtr->masterMenuPtr; menuListPtr != NULL; menuListPtr = menuListPtr->nextInstancePtr) { for (i = last; i >= first; i--) { - Tcl_EventuallyFree(menuListPtr->entries[i], (Tcl_FreeProc *) DestroyMenuEntry); + Tcl_EventuallyFree(menuListPtr->entries[i], (Tcl_FreeProc *)(void *)DestroyMenuEntry); } for (i = last + 1; i < menuListPtr->numEntries; i++) { j = i - numDeleted; diff --git a/generic/tkOldConfig.c b/generic/tkOldConfig.c index fe27ef6..62f3cd8 100644 --- a/generic/tkOldConfig.c +++ b/generic/tkOldConfig.c @@ -716,7 +716,7 @@ FormatConfigInfo( } result = Tcl_Merge(5, argv); if (freeProc != NULL) { - if ((freeProc == TCL_DYNAMIC) || (freeProc == (Tcl_FreeProc *) free)) { + if ((freeProc == TCL_DYNAMIC) || (freeProc == (Tcl_FreeProc *)(void *)free)) { ckfree((char *) argv[4]); } else { freeProc((char *) argv[4]); @@ -939,7 +939,7 @@ Tk_ConfigureValue( &freeProc); Tcl_SetObjResult(interp, Tcl_NewStringObj(result, -1)); if (freeProc != NULL) { - if ((freeProc == TCL_DYNAMIC) || (freeProc == (Tcl_FreeProc *) free)) { + if ((freeProc == TCL_DYNAMIC) || (freeProc == (Tcl_FreeProc *)(void *)free)) { ckfree((char *) result); } else { freeProc((char *) result); diff --git a/generic/tkPack.c b/generic/tkPack.c index b3b7228..9f5ea56 100644 --- a/generic/tkPack.c +++ b/generic/tkPack.c @@ -1465,7 +1465,7 @@ PackStructureProc( Tcl_CancelIdleCall(ArrangePacking, packPtr); } packPtr->tkwin = NULL; - Tcl_EventuallyFree(packPtr, (Tcl_FreeProc *) DestroyPacker); + Tcl_EventuallyFree(packPtr, (Tcl_FreeProc *)(void *)DestroyPacker); } else if (eventPtr->type == MapNotify) { /* * When a container gets mapped, must redo the geometry computation so diff --git a/generic/tkSquare.c b/generic/tkSquare.c index 61f86c5..d45dc25 100644 --- a/generic/tkSquare.c +++ b/generic/tkSquare.c @@ -410,7 +410,7 @@ SquareObjEventProc( if (squarePtr->updatePending) { Tcl_CancelIdleCall(SquareDisplay, squarePtr); } - Tcl_EventuallyFree(squarePtr, (Tcl_FreeProc *) SquareDestroy); + Tcl_EventuallyFree(squarePtr, (Tcl_FreeProc *)(void *)SquareDestroy); } } diff --git a/generic/ttk/ttkWidget.c b/generic/ttk/ttkWidget.c index 9fa8ec0..a40c1bb 100644 --- a/generic/ttk/ttkWidget.c +++ b/generic/ttk/ttkWidget.c @@ -238,7 +238,7 @@ DestroyWidget(WidgetCore *corePtr) /* NB: this can reenter the interpreter via a command traces */ Tcl_DeleteCommandFromToken(corePtr->interp, cmd); } - Tcl_EventuallyFree(corePtr, (Tcl_FreeProc *) FreeWidget); + Tcl_EventuallyFree(corePtr, (Tcl_FreeProc *)(void *)FreeWidget); } /* -- cgit v0.12