Fix C89 compatibility issues (GCC 14 build failure)
Related to: <https://fedoraproject.org/wiki/Changes/PortingToModernC> <https://fedoraproject.org/wiki/Toolchain/PortingToModernC>
This commit is contained in:
parent
9f49ee3069
commit
0721d386bc
230
tix-c89.patch
Normal file
230
tix-c89.patch
Normal file
@ -0,0 +1,230 @@
|
||||
Fix various incompatible pointers by switching to correct
|
||||
const-qualified types.
|
||||
|
||||
Several problematic casts can be removed, except for the one in the
|
||||
masterPtr->data in ImgXpmGetData.
|
||||
|
||||
Submitted upstream: <https://sourceforge.net/p/tix/bugs/113/>
|
||||
|
||||
diff --git a/generic/tixDItem.c b/generic/tixDItem.c
|
||||
index 602c506d158d8a98..d23a4eb036aa8997 100644
|
||||
--- a/generic/tixDItem.c
|
||||
+++ b/generic/tixDItem.c
|
||||
@@ -30,7 +30,7 @@ static int DItemParseProc _ANSI_ARGS_((ClientData clientData,
|
||||
Tcl_Interp *interp, Tk_Window tkwin, CONST84 char *value,
|
||||
char *widRec, int offset));
|
||||
|
||||
-static char *DItemPrintProc _ANSI_ARGS_((
|
||||
+static const char *DItemPrintProc _ANSI_ARGS_((
|
||||
ClientData clientData, Tk_Window tkwin, char *widRec,
|
||||
int offset, Tcl_FreeProc **freeProcPtr));
|
||||
|
||||
@@ -548,7 +548,7 @@ static int DItemParseProc(clientData, interp, tkwin, value, widRec,offset)
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
-static char *DItemPrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
|
||||
+static const char *DItemPrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
|
||||
ClientData clientData;
|
||||
Tk_Window tkwin;
|
||||
char *widRec;
|
||||
diff --git a/generic/tixDiStyle.c b/generic/tixDiStyle.c
|
||||
index 3c450cf001d075ba..fba76706afcd16f0 100644
|
||||
--- a/generic/tixDiStyle.c
|
||||
+++ b/generic/tixDiStyle.c
|
||||
@@ -31,7 +31,7 @@ typedef struct StyleInfo {
|
||||
static int DItemStyleParseProc _ANSI_ARGS_((ClientData clientData,
|
||||
Tcl_Interp *interp, Tk_Window tkwin,
|
||||
CONST84 char *value,char *widRec, int offset));
|
||||
-static char * DItemStylePrintProc _ANSI_ARGS_((
|
||||
+static const char * DItemStylePrintProc _ANSI_ARGS_((
|
||||
ClientData clientData, Tk_Window tkwin,
|
||||
char *widRec, int offset,
|
||||
Tcl_FreeProc **freeProcPtr));
|
||||
@@ -998,7 +998,7 @@ not_found:
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
-static char *DItemStylePrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
|
||||
+static const char *DItemStylePrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
|
||||
ClientData clientData;
|
||||
Tk_Window tkwin;
|
||||
char *widRec;
|
||||
diff --git a/generic/tixImgCmp.c b/generic/tixImgCmp.c
|
||||
index 4ba60ca06541156e..5df05c4eb32a4611 100644
|
||||
--- a/generic/tixImgCmp.c
|
||||
+++ b/generic/tixImgCmp.c
|
||||
@@ -142,8 +142,8 @@ typedef union CmpItemPtr {
|
||||
* The type record for bitmap images:
|
||||
*/
|
||||
static int ImgCmpCreate _ANSI_ARGS_((Tcl_Interp *interp,
|
||||
- char *name, int argc, Tcl_Obj *CONST objv[],
|
||||
- Tk_ImageType *typePtr, Tk_ImageMaster master,
|
||||
+ const char *name, int argc, Tcl_Obj *CONST objv[],
|
||||
+ const Tk_ImageType *typePtr, Tk_ImageMaster master,
|
||||
ClientData *clientDataPtr));
|
||||
static ClientData ImgCmpGet _ANSI_ARGS_((Tk_Window tkwin,
|
||||
ClientData clientData));
|
||||
@@ -378,11 +378,11 @@ static int
|
||||
ImgCmpCreate(interp, name, argc, objv, typePtr, master, clientDataPtr)
|
||||
Tcl_Interp *interp; /* Interpreter for application containing
|
||||
* image. */
|
||||
- char *name; /* Name to use for image. */
|
||||
+ const char *name; /* Name to use for image. */
|
||||
int argc; /* Number of arguments. */
|
||||
Tcl_Obj *CONST objv[]; /* Argument strings for options (doesn't
|
||||
* include image name or type). */
|
||||
- Tk_ImageType *typePtr; /* Pointer to our type record (not used). */
|
||||
+ const Tk_ImageType *typePtr;/* Pointer to our type record (not used). */
|
||||
Tk_ImageMaster master; /* Token for image, to be used by us in
|
||||
* later callbacks. */
|
||||
ClientData *clientDataPtr; /* Store manager's token for image here;
|
||||
diff --git a/generic/tixImgXpm.c b/generic/tixImgXpm.c
|
||||
index 23c3981c6ea29fe8..16afe3b2318cf6e2 100644
|
||||
--- a/generic/tixImgXpm.c
|
||||
+++ b/generic/tixImgXpm.c
|
||||
@@ -22,8 +22,8 @@
|
||||
*/
|
||||
|
||||
static int ImgXpmCreate _ANSI_ARGS_((Tcl_Interp *interp,
|
||||
- char *name, int argc, Tcl_Obj *CONST objv[],
|
||||
- Tk_ImageType *typePtr, Tk_ImageMaster master,
|
||||
+ const char *name, int argc, Tcl_Obj *CONST objv[],
|
||||
+ const Tk_ImageType *typePtr, Tk_ImageMaster master,
|
||||
ClientData *clientDataPtr));
|
||||
static ClientData ImgXpmGet _ANSI_ARGS_((Tk_Window tkwin,
|
||||
ClientData clientData));
|
||||
@@ -45,11 +45,11 @@ static int ImgXpmConfigureMaster _ANSI_ARGS_((
|
||||
int flags));
|
||||
static int ImgXpmGetData _ANSI_ARGS_((Tcl_Interp *interp,
|
||||
PixmapMaster *masterPtr));
|
||||
-static char ** ImgXpmGetDataFromFile _ANSI_ARGS_((Tcl_Interp * interp,
|
||||
+static const char ** ImgXpmGetDataFromFile _ANSI_ARGS_((Tcl_Interp * interp,
|
||||
char * string, int * numLines_return));
|
||||
-static char ** ImgXpmGetDataFromId _ANSI_ARGS_((Tcl_Interp * interp,
|
||||
+static const char ** ImgXpmGetDataFromId _ANSI_ARGS_((Tcl_Interp * interp,
|
||||
CONST84 char * id));
|
||||
-static char ** ImgXpmGetDataFromString _ANSI_ARGS_((Tcl_Interp*interp,
|
||||
+static const char ** ImgXpmGetDataFromString _ANSI_ARGS_((Tcl_Interp*interp,
|
||||
char * string, int * numLines_return));
|
||||
static void ImgXpmGetPixmapFromData _ANSI_ARGS_((
|
||||
Tcl_Interp * interp,
|
||||
@@ -115,11 +115,11 @@ static int
|
||||
ImgXpmCreate(interp, name, argc, objv, typePtr, master, clientDataPtr)
|
||||
Tcl_Interp *interp; /* Interpreter for application containing
|
||||
* image. */
|
||||
- char *name; /* Name to use for image. */
|
||||
+ const char *name; /* Name to use for image. */
|
||||
int argc; /* Number of arguments. */
|
||||
Tcl_Obj *CONST objv[]; /* Argument strings for options (doesn't
|
||||
* include image name or type). */
|
||||
- Tk_ImageType *typePtr; /* Pointer to our type record (not used). */
|
||||
+ const Tk_ImageType *typePtr;/* Pointer to our type record (not used). */
|
||||
Tk_ImageMaster master; /* Token for image, to be used by us in
|
||||
* later callbacks. */
|
||||
ClientData *clientDataPtr; /* Store manager's token for image here;
|
||||
@@ -286,7 +286,7 @@ ImgXpmGetData(interp, masterPtr)
|
||||
Tcl_Interp *interp; /* For reporting errors. */
|
||||
PixmapMaster *masterPtr;
|
||||
{
|
||||
- char ** data = NULL;
|
||||
+ const char ** data = NULL;
|
||||
int isAllocated = 0; /* do we need to free "data"? */
|
||||
int listArgc;
|
||||
CONST84 char ** listArgv = NULL;
|
||||
@@ -342,7 +342,7 @@ ImgXpmGetData(interp, masterPtr)
|
||||
ckfree((char*)masterPtr->data);
|
||||
}
|
||||
masterPtr->isDataAlloced = isAllocated;
|
||||
- masterPtr->data = data;
|
||||
+ masterPtr->data = (char **)data;
|
||||
masterPtr->size[0] = size[0];
|
||||
masterPtr->size[1] = size[1];
|
||||
masterPtr->cpp = cpp;
|
||||
@@ -363,7 +363,7 @@ ImgXpmGetData(interp, masterPtr)
|
||||
return code;
|
||||
}
|
||||
|
||||
-static char ** ImgXpmGetDataFromId(interp, id)
|
||||
+static const char ** ImgXpmGetDataFromId(interp, id)
|
||||
Tcl_Interp * interp;
|
||||
CONST84 char * id;
|
||||
{
|
||||
@@ -378,13 +378,13 @@ static char ** ImgXpmGetDataFromId(interp, id)
|
||||
if (hashPtr == NULL) {
|
||||
Tcl_AppendResult(interp, "unknown pixmap ID \"", id,
|
||||
"\"", NULL);
|
||||
- return (char**)NULL;
|
||||
+ return NULL;
|
||||
} else {
|
||||
- return (char**)Tcl_GetHashValue(hashPtr);
|
||||
+ return Tcl_GetHashValue(hashPtr);
|
||||
}
|
||||
}
|
||||
|
||||
-static char ** ImgXpmGetDataFromString(interp, string, numLines_return)
|
||||
+static const char ** ImgXpmGetDataFromString(interp, string, numLines_return)
|
||||
Tcl_Interp * interp;
|
||||
char * string;
|
||||
int * numLines_return;
|
||||
@@ -392,7 +392,7 @@ static char ** ImgXpmGetDataFromString(interp, string, numLines_return)
|
||||
int quoted;
|
||||
char * p, * list;
|
||||
int numLines;
|
||||
- char ** data;
|
||||
+ const char ** data;
|
||||
|
||||
/* skip the leading blanks (leading blanks are not defined in the
|
||||
* the XPM definition, but skipping them shouldn't hurt. Also, the ability
|
||||
@@ -510,17 +510,17 @@ static char ** ImgXpmGetDataFromString(interp, string, numLines_return)
|
||||
|
||||
error:
|
||||
Tcl_AppendResult(interp, "File format error", NULL);
|
||||
- return (char**) NULL;
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
-static char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return)
|
||||
+static const char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return)
|
||||
Tcl_Interp * interp;
|
||||
char * fileName;
|
||||
int * numLines_return;
|
||||
{
|
||||
FILE * fd = NULL;
|
||||
int size, n;
|
||||
- char ** data;
|
||||
+ const char ** data;
|
||||
char *cmdBuffer = NULL;
|
||||
Tcl_DString buffer; /* initialized by Tcl_TildeSubst */
|
||||
|
||||
@@ -588,7 +588,7 @@ static char ** ImgXpmGetDataFromFile(interp, fileName, numLines_return)
|
||||
ckfree(cmdBuffer);
|
||||
}
|
||||
Tcl_DStringFree(&buffer);
|
||||
- return (char**)NULL;
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
|
||||
diff --git a/generic/tixUtils.c b/generic/tixUtils.c
|
||||
index 998acb84e3f8c79c..e7967b51ecd3a1e4 100644
|
||||
--- a/generic/tixUtils.c
|
||||
+++ b/generic/tixUtils.c
|
||||
@@ -24,7 +24,7 @@
|
||||
static int ReliefParseProc(ClientData clientData,
|
||||
Tcl_Interp *interp, Tk_Window tkwin, CONST84 char *value,
|
||||
char *widRec, int offset);
|
||||
-static char * ReliefPrintProc(ClientData clientData,
|
||||
+static const char * ReliefPrintProc(ClientData clientData,
|
||||
Tk_Window tkwin, char *widRec, int offset,
|
||||
Tix_FreeProc **freeProcPtr);
|
||||
|
||||
@@ -637,7 +637,7 @@ ReliefParseProc(clientData, interp, tkwin, value, widRec,offset)
|
||||
return TCL_ERROR;
|
||||
}
|
||||
|
||||
-static char *
|
||||
+static const char *
|
||||
ReliefPrintProc(clientData, tkwin, widRec,offset, freeProcPtr)
|
||||
ClientData clientData;
|
||||
Tk_Window tkwin;
|
||||
9
tix.spec
9
tix.spec
@ -8,7 +8,7 @@ Summary: A set of extension widgets for Tk
|
||||
Name: tix
|
||||
Epoch: 1
|
||||
Version: %{tixmajor}.3
|
||||
Release: 39%{?dist}
|
||||
Release: 40%{?dist}
|
||||
License: TCL
|
||||
URL: http://tix.sourceforge.net/
|
||||
Source0: http://downloads.sourceforge.net/project/%{name}/%{name}/%{version}/Tix%{version}-src.tar.gz
|
||||
@ -18,6 +18,7 @@ Patch1: tix-8.4.3-tcl86.patch
|
||||
Patch2: tix-8.4.3-covscan-fixes.patch
|
||||
Patch3: tix-implicit-int.patch
|
||||
Patch4: tix-configure-c99.patch
|
||||
Patch5: tix-c89.patch
|
||||
Requires: tcl(abi) = 8.6
|
||||
Requires: tcl >= %{tcltkver}, tk >= %{tcltkver}
|
||||
Requires: /etc/ld.so.conf.d
|
||||
@ -58,8 +59,7 @@ appearance and functionality of your application.
|
||||
This package contains the tix documentation
|
||||
|
||||
%prep
|
||||
%setup -q -n Tix%{version}
|
||||
%autopatch -p1
|
||||
%autosetup -p1 -n Tix%{version}
|
||||
|
||||
# Remove executable permission of images in html documentation
|
||||
chmod ugo-x docs/html/gif/tix/*.png docs/html/gif/tix/*.gif \
|
||||
@ -128,6 +128,9 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/Tix%{tixmajor}/license.terms
|
||||
%doc %{tcl_sitelib}/Tix%{tixmajor}
|
||||
|
||||
%changelog
|
||||
* Mon Jan 29 2024 Florian Weimer <fweimer@redhat.com> - 1:8.4.3-40
|
||||
- Fix C89 compatibility issues (GCC 14 build failure)
|
||||
|
||||
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1:8.4.3-39
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user