New upstream version 3.30.1
This commit is contained in:
parent
a5c7606b73
commit
a584c35a6a
@ -112,7 +112,6 @@ They are normally called through the :command:`find_package` command.
|
||||
/module/FindBacktrace
|
||||
/module/FindBISON
|
||||
/module/FindBLAS
|
||||
/module/FindBoost
|
||||
/module/FindBullet
|
||||
/module/FindBZip2
|
||||
/module/FindCABLE
|
||||
@ -291,6 +290,7 @@ Deprecated Find Modules
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
/module/FindBoost
|
||||
/module/FindCUDA
|
||||
/module/FindDart
|
||||
/module/FindITK
|
||||
|
@ -677,7 +677,6 @@ Variables for CTest
|
||||
/variable/CTEST_CONFIGURE_COMMAND
|
||||
/variable/CTEST_COVERAGE_COMMAND
|
||||
/variable/CTEST_COVERAGE_EXTRA_FLAGS
|
||||
/variable/CTEST_CURL_OPTIONS
|
||||
/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE
|
||||
/variable/CTEST_CUSTOM_ERROR_EXCEPTION
|
||||
/variable/CTEST_CUSTOM_ERROR_MATCH
|
||||
@ -849,6 +848,7 @@ Deprecated Variables for CTest
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
/variable/CTEST_CURL_OPTIONS
|
||||
/variable/CTEST_CVS_CHECKOUT
|
||||
/variable/CTEST_SCP_COMMAND
|
||||
/variable/CTEST_TRIGGER_SITE
|
||||
|
@ -231,9 +231,9 @@ Changes made since CMake 3.29.0 include the following.
|
||||
to ``perMachine`` on their own schedule by setting
|
||||
``CPACK_WIX_INSTALL_SCOPE``.
|
||||
|
||||
3.29.6
|
||||
------
|
||||
3.29.6, 3.29.7
|
||||
--------------
|
||||
|
||||
* This version made no changes to documented features or interfaces.
|
||||
* These versions made no changes to documented features or interfaces.
|
||||
Some implementation updates were made to support ecosystem changes
|
||||
and/or fix regressions.
|
||||
|
@ -242,3 +242,15 @@ Other Changes
|
||||
directory has already been populated. CMake 3.29 and earlier did not
|
||||
check this requirement, but it is now enforced, subject to policy
|
||||
:policy:`CMP0170`.
|
||||
|
||||
Updates
|
||||
=======
|
||||
|
||||
Changes made since CMake 3.30.0 include the following.
|
||||
|
||||
3.30.1
|
||||
------
|
||||
|
||||
* This version made no changes to documented features or interfaces.
|
||||
Some implementation updates were made to support ecosystem changes
|
||||
and/or fix regressions.
|
||||
|
@ -19,8 +19,11 @@ get_filename_component(__intel_llvm_hint_1 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE
|
||||
get_filename_component(__intel_llvm_hint_1 "${__intel_llvm_hint_1}/../bin-llvm" REALPATH)
|
||||
|
||||
get_filename_component(__intel_llvm_hint_2 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
|
||||
get_filename_component(__intel_llvm_hint_2 "${__intel_llvm_hint_2}/compiler" REALPATH)
|
||||
|
||||
set(__intel_llvm_hints ${__intel_llvm_hint_1} ${__intel_llvm_hint_2})
|
||||
get_filename_component(__intel_llvm_hint_3 "${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER}" DIRECTORY)
|
||||
|
||||
set(__intel_llvm_hints ${__intel_llvm_hint_1} ${__intel_llvm_hint_2} ${__intel_llvm_hint_3})
|
||||
|
||||
# http://manpages.ubuntu.com/manpages/precise/en/man1/llvm-ar.1.html
|
||||
find_program(CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_AR NAMES
|
||||
|
@ -16,7 +16,7 @@ endif()
|
||||
# enabling them to be shown for DEBUG may be useful to help diagnose problems.
|
||||
cmake_language(GET_MESSAGE_LOG_LEVEL active_log_level)
|
||||
if(active_log_level MATCHES "DEBUG|TRACE")
|
||||
set(maybe_show_command "COMMAND_ECHO STDOUT")
|
||||
set(maybe_show_command COMMAND_ECHO STDOUT)
|
||||
else()
|
||||
set(maybe_show_command "")
|
||||
endif()
|
||||
|
@ -7,7 +7,7 @@ cmake_minimum_required(VERSION 3.5)
|
||||
# enabling them to be shown for DEBUG may be useful to help diagnose problems.
|
||||
cmake_language(GET_MESSAGE_LOG_LEVEL active_log_level)
|
||||
if(active_log_level MATCHES "DEBUG|TRACE")
|
||||
set(maybe_show_command "COMMAND_ECHO STDOUT")
|
||||
set(maybe_show_command COMMAND_ECHO STDOUT)
|
||||
else()
|
||||
set(maybe_show_command "")
|
||||
endif()
|
||||
|
@ -16,7 +16,7 @@ endif()
|
||||
# enabling them to be shown for DEBUG may be useful to help diagnose problems.
|
||||
cmake_language(GET_MESSAGE_LOG_LEVEL active_log_level)
|
||||
if(active_log_level MATCHES "DEBUG|TRACE")
|
||||
set(maybe_show_command "COMMAND_ECHO STDOUT")
|
||||
set(maybe_show_command COMMAND_ECHO STDOUT)
|
||||
else()
|
||||
set(maybe_show_command "")
|
||||
endif()
|
||||
|
@ -297,7 +297,8 @@ set(_FindMatlab_SELF_DIR "${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
|
||||
|
||||
if(NOT WIN32 AND NOT APPLE AND NOT Threads_FOUND)
|
||||
if(NOT WIN32 AND NOT APPLE AND NOT Threads_FOUND
|
||||
AND (CMAKE_C_COMPILER_LOADED OR CMAKE_CXX_COMPILER_LOADED))
|
||||
# MEX files use pthread if available
|
||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
||||
find_package(Threads)
|
||||
@ -1776,10 +1777,10 @@ endif()
|
||||
|
||||
|
||||
set(MATLAB_INCLUDE_DIR_TO_LOOK ${Matlab_ROOT_DIR}/extern/include)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_matlab_current_suffix ${_matlab_bin_suffix_64bits})
|
||||
else()
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(_matlab_current_suffix ${_matlab_bin_suffix_32bits})
|
||||
else()
|
||||
set(_matlab_current_suffix ${_matlab_bin_suffix_64bits})
|
||||
endif()
|
||||
|
||||
set(Matlab_BINARIES_DIR
|
||||
|
@ -1,7 +1,7 @@
|
||||
# CMake version number components.
|
||||
set(CMake_VERSION_MAJOR 3)
|
||||
set(CMake_VERSION_MINOR 30)
|
||||
set(CMake_VERSION_PATCH 0)
|
||||
set(CMake_VERSION_PATCH 1)
|
||||
#set(CMake_VERSION_RC 0)
|
||||
set(CMake_VERSION_IS_DIRTY 0)
|
||||
|
||||
@ -21,7 +21,7 @@ endif()
|
||||
|
||||
if(NOT CMake_VERSION_NO_GIT)
|
||||
# If this source was exported by 'git archive', use its commit info.
|
||||
set(git_info [==[0f88f57389 CMake 3.30.0]==])
|
||||
set(git_info [==[cd386f6425 CMake 3.30.1]==])
|
||||
|
||||
# Otherwise, try to identify the current development source version.
|
||||
if(NOT git_info MATCHES "^([0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]?[0-9a-f]?)[0-9a-f]* "
|
||||
|
@ -19,6 +19,7 @@ cmCTestCurl::cmCTestCurl(cmCTest* ctest)
|
||||
, CurlOpts(ctest)
|
||||
{
|
||||
this->SetProxyType();
|
||||
cmCurlInitOnce();
|
||||
// In windows, this will init the winsock stuff
|
||||
::curl_global_init(CURL_GLOBAL_ALL);
|
||||
this->Curl = curl_easy_init();
|
||||
|
@ -171,6 +171,7 @@ bool cmCTestSubmitHandler::SubmitUsingHTTP(
|
||||
headers = ::curl_slist_append(headers, h.c_str());
|
||||
}
|
||||
|
||||
cmCurlInitOnce();
|
||||
/* In windows, this will init the winsock stuff */
|
||||
::curl_global_init(CURL_GLOBAL_ALL);
|
||||
cmCTestCurlOpts curlOpts(this->CTest);
|
||||
|
@ -39,6 +39,11 @@
|
||||
# define CURL_SSLVERSION_TLSv1_3 CURL_SSLVERSION_LAST
|
||||
#endif
|
||||
|
||||
// curl versions before 7.64.1 referred to Secure Transport as DarwinSSL
|
||||
#if defined(LIBCURL_VERSION_NUM) && LIBCURL_VERSION_NUM < 0x074001
|
||||
# define CURLSSLBACKEND_SECURETRANSPORT CURLSSLBACKEND_DARWINSSL
|
||||
#endif
|
||||
|
||||
// Make sure we keep up with new TLS versions supported by curl.
|
||||
// Do this only for our vendored curl to avoid breaking builds
|
||||
// against external future versions of curl.
|
||||
@ -47,6 +52,30 @@ static_assert(CURL_SSLVERSION_LAST == 8,
|
||||
"A new CURL_SSLVERSION_ may be available!");
|
||||
#endif
|
||||
|
||||
void cmCurlInitOnce()
|
||||
{
|
||||
// curl 7.56.0 introduced curl_global_sslset.
|
||||
#if defined(__APPLE__) && defined(CMAKE_USE_SYSTEM_CURL) && \
|
||||
defined(LIBCURL_VERSION_NUM) && LIBCURL_VERSION_NUM >= 0x073800
|
||||
static bool initialized = false;
|
||||
if (initialized) {
|
||||
return;
|
||||
}
|
||||
initialized = true;
|
||||
|
||||
cm::optional<std::string> curl_ssl_backend =
|
||||
cmSystemTools::GetEnvVar("CURL_SSL_BACKEND");
|
||||
if (!curl_ssl_backend || curl_ssl_backend->empty()) {
|
||||
curl_version_info_data* cv = curl_version_info(CURLVERSION_FIRST);
|
||||
// curl 8.3.0 through 8.5.x did not re-initialize LibreSSL correctly,
|
||||
// so prefer the Secure Transport backend by default in those versions.
|
||||
if (cv->version_num >= 0x080300 && cv->version_num < 0x080600) {
|
||||
curl_global_sslset(CURLSSLBACKEND_SECURETRANSPORT, NULL, NULL);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
cm::optional<int> cmCurlParseTLSVersion(cm::string_view tls_version)
|
||||
{
|
||||
cm::optional<int> v;
|
||||
|
@ -11,6 +11,7 @@
|
||||
|
||||
#include <cm3p/curl/curl.h>
|
||||
|
||||
void cmCurlInitOnce();
|
||||
cm::optional<int> cmCurlParseTLSVersion(cm::string_view tls_version);
|
||||
cm::optional<std::string> cmCurlPrintTLSVersion(int curl_tls_version);
|
||||
std::string cmCurlSetCAInfo(::CURL* curl, const std::string& cafile = {});
|
||||
|
@ -613,6 +613,7 @@ void cmExportFileGenerator::PopulateCustomTransitiveInterfaceProperties(
|
||||
properties);
|
||||
this->PopulateInterfaceProperty("TRANSITIVE_LINK_PROPERTIES", target,
|
||||
properties);
|
||||
cmGeneratorTarget::CheckLinkLibrariesSuppressionRAII cllSuppressRAII;
|
||||
std::set<std::string> ifaceProperties;
|
||||
for (std::string const& config : this->Configurations) {
|
||||
for (auto const& i : target->GetCustomTransitiveProperties(
|
||||
|
@ -2115,6 +2115,7 @@ bool HandleDownloadCommand(std::vector<std::string> const& args,
|
||||
url = cmCurlFixFileURL(url);
|
||||
|
||||
::CURL* curl;
|
||||
cmCurlInitOnce();
|
||||
::curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
curl = ::curl_easy_init();
|
||||
if (!curl) {
|
||||
@ -2488,6 +2489,7 @@ bool HandleUploadCommand(std::vector<std::string> const& args,
|
||||
url = cmCurlFixFileURL(url);
|
||||
|
||||
::CURL* curl;
|
||||
cmCurlInitOnce();
|
||||
::curl_global_init(CURL_GLOBAL_DEFAULT);
|
||||
curl = ::curl_easy_init();
|
||||
if (!curl) {
|
||||
|
@ -99,6 +99,13 @@ public:
|
||||
// Call this after generation is complete.
|
||||
void CheckLinkLibraries() const;
|
||||
|
||||
class CheckLinkLibrariesSuppressionRAII
|
||||
{
|
||||
public:
|
||||
CheckLinkLibrariesSuppressionRAII();
|
||||
~CheckLinkLibrariesSuppressionRAII();
|
||||
};
|
||||
|
||||
cmStateEnums::TargetType GetType() const;
|
||||
const std::string& GetName() const;
|
||||
std::string GetExportName() const;
|
||||
|
@ -54,6 +54,20 @@ const std::string kINTERFACE_LINK_LIBRARIES_DIRECT =
|
||||
"INTERFACE_LINK_LIBRARIES_DIRECT";
|
||||
const std::string kINTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE =
|
||||
"INTERFACE_LINK_LIBRARIES_DIRECT_EXCLUDE";
|
||||
|
||||
unsigned int CheckLinkLibrariesSuppressionRAIICount;
|
||||
void MaybeEnableCheckLinkLibraries(cmOptionalLinkImplementation& impl)
|
||||
{
|
||||
if (CheckLinkLibrariesSuppressionRAIICount == 0) {
|
||||
impl.CheckLinkLibraries = true;
|
||||
}
|
||||
}
|
||||
void MaybeEnableCheckLinkLibraries(cmOptionalLinkInterface& iface)
|
||||
{
|
||||
if (CheckLinkLibrariesSuppressionRAIICount == 0) {
|
||||
iface.CheckLinkLibraries = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class cmTargetCollectLinkLanguages
|
||||
@ -372,7 +386,8 @@ void cmGeneratorTarget::CheckLinkLibraries() const
|
||||
// There could be several entries used when computing the pre-CMP0022
|
||||
// default link interface. Check only the entry for our own link impl.
|
||||
auto const hmi = hm.find(this);
|
||||
if (hmi == hm.end() || !hmi->second.LibrariesDone) {
|
||||
if (hmi == hm.end() || !hmi->second.LibrariesDone ||
|
||||
!hmi->second.CheckLinkLibraries) {
|
||||
continue;
|
||||
}
|
||||
for (cmLinkImplItem const& item : hmi->second.Libraries) {
|
||||
@ -392,7 +407,7 @@ void cmGeneratorTarget::CheckLinkLibraries() const
|
||||
// should be a subset of LinkInterfaceMap (with LINK_ONLY left out).
|
||||
for (auto const& hmp : this->LinkInterfaceMap) {
|
||||
for (auto const& hmi : hmp.second) {
|
||||
if (!hmi.second.LibrariesDone) {
|
||||
if (!hmi.second.LibrariesDone || !hmi.second.CheckLinkLibraries) {
|
||||
continue;
|
||||
}
|
||||
for (cmLinkItem const& item : hmi.second.Libraries) {
|
||||
@ -408,6 +423,18 @@ void cmGeneratorTarget::CheckLinkLibraries() const
|
||||
}
|
||||
}
|
||||
|
||||
cmGeneratorTarget::CheckLinkLibrariesSuppressionRAII::
|
||||
CheckLinkLibrariesSuppressionRAII()
|
||||
{
|
||||
++CheckLinkLibrariesSuppressionRAIICount;
|
||||
}
|
||||
|
||||
cmGeneratorTarget::CheckLinkLibrariesSuppressionRAII::
|
||||
~CheckLinkLibrariesSuppressionRAII()
|
||||
{
|
||||
--CheckLinkLibrariesSuppressionRAIICount;
|
||||
}
|
||||
|
||||
namespace {
|
||||
cm::string_view missingTargetPossibleReasons =
|
||||
"Possible reasons include:\n"
|
||||
@ -642,6 +669,7 @@ cmLinkInterface const* cmGeneratorTarget::GetLinkInterface(
|
||||
if (secondPass) {
|
||||
iface = cmOptionalLinkInterface();
|
||||
}
|
||||
MaybeEnableCheckLinkLibraries(iface);
|
||||
if (!iface.LibrariesDone) {
|
||||
iface.LibrariesDone = true;
|
||||
this->ComputeLinkInterfaceLibraries(config, iface, head, UseTo::Link);
|
||||
@ -765,6 +793,7 @@ const cmLinkInterfaceLibraries* cmGeneratorTarget::GetLinkInterfaceLibraries(
|
||||
}
|
||||
|
||||
cmOptionalLinkInterface& iface = hm[head];
|
||||
MaybeEnableCheckLinkLibraries(iface);
|
||||
if (!iface.LibrariesDone) {
|
||||
iface.LibrariesDone = true;
|
||||
this->ComputeLinkInterfaceLibraries(config, iface, head, usage);
|
||||
@ -1034,6 +1063,7 @@ const cmLinkInterface* cmGeneratorTarget::GetImportLinkInterface(
|
||||
if (secondPass) {
|
||||
iface = cmOptionalLinkInterface();
|
||||
}
|
||||
MaybeEnableCheckLinkLibraries(iface);
|
||||
if (!iface.AllDone) {
|
||||
iface.AllDone = true;
|
||||
iface.LibrariesDone = true;
|
||||
@ -1106,6 +1136,7 @@ const cmLinkImplementation* cmGeneratorTarget::GetLinkImplementation(
|
||||
if (secondPass) {
|
||||
impl = cmOptionalLinkImplementation();
|
||||
}
|
||||
MaybeEnableCheckLinkLibraries(impl);
|
||||
if (!impl.LibrariesDone) {
|
||||
impl.LibrariesDone = true;
|
||||
this->ComputeLinkImplementationLibraries(config, impl, this, usage);
|
||||
@ -1162,6 +1193,7 @@ cmGeneratorTarget::GetLinkImplementationLibrariesInternal(
|
||||
}
|
||||
|
||||
cmOptionalLinkImplementation& impl = hm[head];
|
||||
MaybeEnableCheckLinkLibraries(impl);
|
||||
if (!impl.LibrariesDone) {
|
||||
impl.LibrariesDone = true;
|
||||
this->ComputeLinkImplementationLibraries(config, impl, head, usage);
|
||||
|
@ -124,6 +124,7 @@ struct cmOptionalLinkInterface : public cmLinkInterface
|
||||
bool AllDone = false;
|
||||
bool Exists = false;
|
||||
bool Explicit = false;
|
||||
bool CheckLinkLibraries = false;
|
||||
};
|
||||
|
||||
struct cmHeadToLinkInterfaceMap
|
||||
@ -148,6 +149,7 @@ struct cmOptionalLinkImplementation : public cmLinkImplementation
|
||||
bool LibrariesDone = false;
|
||||
bool LanguagesDone = false;
|
||||
bool HadHeadSensitiveCondition = false;
|
||||
bool CheckLinkLibraries = false;
|
||||
};
|
||||
|
||||
/** Compute the link type to use for the given configuration. */
|
||||
|
@ -3880,6 +3880,14 @@ bool cmVisualStudio10TargetGenerator::ComputeCudaOptions(
|
||||
cudaOptions.AddFlag("CudaRuntime", "None");
|
||||
}
|
||||
|
||||
if (this->ProjectType == VsProjectType::vcxproj && this->MSTools) {
|
||||
// Suppress inheritance of host compiler optimization flags
|
||||
// when the project does not specify any optimization flags for CUDA.
|
||||
if (!cudaOptions.HasFlag("Optimization")) {
|
||||
cudaOptions.AddFlag("Optimization", "");
|
||||
}
|
||||
}
|
||||
|
||||
this->CudaOptions[configName] = std::move(pOptions);
|
||||
return true;
|
||||
}
|
||||
|
@ -29,6 +29,9 @@ add_library(compileOnly INTERFACE)
|
||||
target_compile_definitions(compileOnly INTERFACE FROM_compileOnly)
|
||||
target_link_options(compileOnly INTERFACE -fthis-flag-does-not-exist)
|
||||
|
||||
add_library(noUses INTERFACE)
|
||||
target_link_libraries(noUses INTERFACE this::target_does_not_exist)
|
||||
|
||||
add_library(testLib1 STATIC testLib1.c)
|
||||
add_library(testLib2 STATIC testLib2.c)
|
||||
target_link_libraries(testLib2 testLib1)
|
||||
@ -601,6 +604,7 @@ install(FILES
|
||||
install(
|
||||
TARGETS
|
||||
compileOnly
|
||||
noUses
|
||||
testExe1 testLib1 testLib2 testExe2 testLib3 testLib4 testExe3 testExe4
|
||||
testExe2lib testLib4lib testLib4libdbg testLib4libopt
|
||||
testLib6 testLib7 testLib8
|
||||
@ -676,7 +680,7 @@ export(TARGETS testExe1 testLib1 testLib2 testLib3
|
||||
testSharedLibDepends renamed_on_export
|
||||
cmp0022NEW cmp0022OLD
|
||||
TopDirLib SubDirLinkA
|
||||
systemlib
|
||||
systemlib noUses
|
||||
testInterfaceIncludeUser
|
||||
testInterfaceIncludeUser2
|
||||
NAMESPACE bld_
|
||||
|
@ -15,9 +15,6 @@ endif()
|
||||
|
||||
run_cmake(BadIndependentStep1)
|
||||
run_cmake(BadIndependentStep2)
|
||||
run_cmake(TLSVersionBadArg)
|
||||
run_cmake(TLSVersionBadVar)
|
||||
run_cmake(TLSVersionBadEnv)
|
||||
run_cmake(NoOptions)
|
||||
run_cmake(SourceEmpty)
|
||||
run_cmake(SourceMissing)
|
||||
@ -256,5 +253,9 @@ if(GIT_EXECUTABLE)
|
||||
# on some platforms. It may go to stdout or stderr, so force it to be merged.
|
||||
set(RunCMake_TEST_OUTPUT_MERGE TRUE)
|
||||
run_cmake(FetchGitRefs)
|
||||
set(RunCMake_TEST_OUTPUT_MERGE FALSE)
|
||||
unset(RunCMake_TEST_OUTPUT_MERGE)
|
||||
|
||||
run_cmake(TLSVersionBadArg)
|
||||
run_cmake(TLSVersionBadVar)
|
||||
run_cmake(TLSVersionBadEnv)
|
||||
endif()
|
||||
|
4
Tests/RunCMake/install/EXPORT-InterfaceLinkNoexist.cmake
Normal file
4
Tests/RunCMake/install/EXPORT-InterfaceLinkNoexist.cmake
Normal file
@ -0,0 +1,4 @@
|
||||
add_library(foo INTERFACE)
|
||||
target_link_libraries(foo INTERFACE nonexistent::bar)
|
||||
install(TARGETS foo DESTINATION lib EXPORT foo-targets)
|
||||
install(EXPORT foo-targets FILE foo-targets.cmake DESTINATION lib)
|
@ -85,6 +85,7 @@ run_cmake(EXPORT-UnknownExport)
|
||||
run_cmake(EXPORT-NamelinkOnly)
|
||||
run_cmake(EXPORT-SeparateNamelink)
|
||||
run_cmake(EXPORT-TargetTwice)
|
||||
run_cmake(EXPORT-InterfaceLinkNoexist)
|
||||
run_cmake(CMP0062-OLD)
|
||||
run_cmake(CMP0062-NEW)
|
||||
run_cmake(CMP0062-WARN)
|
||||
|
@ -274,6 +274,9 @@ long uv__idna_toascii(const char* s, const char* se, char* d, char* de) {
|
||||
char* ds;
|
||||
int rc;
|
||||
|
||||
if (s == se)
|
||||
return UV_EINVAL;
|
||||
|
||||
ds = d;
|
||||
|
||||
si = s;
|
||||
@ -308,8 +311,9 @@ long uv__idna_toascii(const char* s, const char* se, char* d, char* de) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (d < de)
|
||||
*d++ = '\0';
|
||||
if (d >= de)
|
||||
return UV_EINVAL;
|
||||
|
||||
*d++ = '\0';
|
||||
return d - ds; /* Number of bytes written. */
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user