cmake/cmake-c99.patch

84 lines
2.7 KiB
Diff

Improve C compatibility of LoadCommand tests
The previous code used char ** and const char ** types as if they were
the same. But they are distinct types in C, so when passing these
pointers as function arguments, their types have to match. Future C
compilers will treat this as an error, similar to what C++ compilers
do today.
Submitted upstream:
<https://gitlab.kitware.com/cmake/cmake/-/merge_requests/9002>
diff --git a/Tests/LoadCommand/CMakeCommands/cmTestCommand.c b/Tests/LoadCommand/CMakeCommands/cmTestCommand.c
index 7176ebe9d4bd3c4e..ba13727d2b83a051 100644
--- a/Tests/LoadCommand/CMakeCommands/cmTestCommand.c
+++ b/Tests/LoadCommand/CMakeCommands/cmTestCommand.c
@@ -16,14 +16,14 @@ static int CCONV InitialPass(void* inf, void* mf, int argc, char* argv[])
{
char* file;
char* str;
- char* srcs;
+ const char* srcs;
const char* cstr;
char buffer[1024];
void* source_file;
char* args[2];
- char* ccArgs[4];
- char* ccDep[1];
- char* ccOut[1];
+ const char* ccArgs[4];
+ const char* ccDep[1];
+ const char* ccOut[1];
cmLoadedCommandInfo* info = (cmLoadedCommandInfo*)inf;
cmVTKWrapTclData* cdata =
@@ -148,7 +148,10 @@ static int CCONV InitialPass(void* inf, void* mf, int argc, char* argv[])
if (info->CAPI->GetTotalArgumentSize(2, args) != 13) {
return 0;
}
- info->CAPI->ExecuteCommand(mf, "SET", 2, args);
+
+ ccArgs[0] = "TEST_EXEC";
+ ccArgs[1] = "TRUE";
+ info->CAPI->ExecuteCommand(mf, "SET", 2, ccArgs);
/* make sure we can find the source file */
if (!info->CAPI->GetSource(mf, argv[1])) {
diff --git a/Tests/LoadCommandOneConfig/CMakeCommands/cmTestCommand.c b/Tests/LoadCommandOneConfig/CMakeCommands/cmTestCommand.c
index 7176ebe9d4bd3c4e..e3b332c1aa9d9108 100644
--- a/Tests/LoadCommandOneConfig/CMakeCommands/cmTestCommand.c
+++ b/Tests/LoadCommandOneConfig/CMakeCommands/cmTestCommand.c
@@ -16,14 +16,14 @@ static int CCONV InitialPass(void* inf, void* mf, int argc, char* argv[])
{
char* file;
char* str;
- char* srcs;
- const char* cstr;
+ const char* srcs;
+ char* cstr;
char buffer[1024];
void* source_file;
char* args[2];
- char* ccArgs[4];
- char* ccDep[1];
- char* ccOut[1];
+ const char* ccArgs[4];
+ const char* ccDep[1];
+ const char* ccOut[1];
cmLoadedCommandInfo* info = (cmLoadedCommandInfo*)inf;
cmVTKWrapTclData* cdata =
@@ -148,7 +148,10 @@ static int CCONV InitialPass(void* inf, void* mf, int argc, char* argv[])
if (info->CAPI->GetTotalArgumentSize(2, args) != 13) {
return 0;
}
- info->CAPI->ExecuteCommand(mf, "SET", 2, args);
+
+ ccArgs[0] = "TEST_EXEC";
+ ccArgs[1] = "TRUE";
+ info->CAPI->ExecuteCommand(mf, "SET", 2, ccArgs);
/* make sure we can find the source file */
if (!info->CAPI->GetSource(mf, argv[1])) {