From f868e47236f8872a1edc84ae084f49609def06ad Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 27 Jul 2013 11:14:56 +0200 Subject: Fix crash on export of target with empty INTERFACE_INCLUDE_DIRECTORIES. The new feature of install(TARGETS ... INCLUDES DESTINATION) introduced in commit 650e61f8 (Add a convenient way to add the includes install dir to the INTERFACE., 2013-01-05) introduced this crash. If the new feature is used with a target which has no INTERFACE_INCLUDE_DIRECTORIES, a segfault occurred. --- Source/cmExportFileGenerator.cxx | 2 +- Tests/ExportImport/Export/CMakeLists.txt | 3 +++ Tests/ExportImport/Export/empty.cpp | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 Tests/ExportImport/Export/empty.cpp diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index 36802b5..084829d 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -291,7 +291,7 @@ void cmExportFileGenerator::PopulateIncludeDirectoriesInterface( { return; } - if (!*input && tei->InterfaceIncludeDirectories.empty()) + if ((input && !*input) && tei->InterfaceIncludeDirectories.empty()) { // Set to empty properties[propName] = ""; diff --git a/Tests/ExportImport/Export/CMakeLists.txt b/Tests/ExportImport/Export/CMakeLists.txt index 49f1c58..1910f8c 100644 --- a/Tests/ExportImport/Export/CMakeLists.txt +++ b/Tests/ExportImport/Export/CMakeLists.txt @@ -270,6 +270,8 @@ set_property(TARGET cmp0022NEW APPEND PROPERTY INTERFACE_LINK_LIBRARIES testLib2 set_property(TARGET cmp0022OLD APPEND PROPERTY INTERFACE_LINK_LIBRARIES testLib2) set_property(TARGET cmp0022OLD APPEND PROPERTY LINK_INTERFACE_LIBRARIES testLib3) +add_library(noIncludesInterface empty.cpp) + install(TARGETS testLibRequired testLibIncludeRequired1 testLibIncludeRequired2 @@ -278,6 +280,7 @@ install(TARGETS testLibRequired testLibIncludeRequired5 testLibIncludeRequired6 testSharedLibRequired + noIncludesInterface EXPORT RequiredExp DESTINATION lib INCLUDES DESTINATION installIncludesTest diff --git a/Tests/ExportImport/Export/empty.cpp b/Tests/ExportImport/Export/empty.cpp new file mode 100644 index 0000000..1787013 --- /dev/null +++ b/Tests/ExportImport/Export/empty.cpp @@ -0,0 +1,4 @@ +#ifdef _WIN32 +__declspec(dllexport) +#endif +int empty() { return 0; } -- cgit v0.12