From 43b7a3693ea8c8ce05af8f42f8007c73e129aaf6 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Thu, 18 Jun 2020 11:53:52 +0200 Subject: [PATCH] CMake: Fix parsing of .gitmodules to be more robust Fix empty lines in .gitmodules, rather than failing to configure with an error message that the line is malformed. Quote all relevant values, to avoid errors that string REGEX does not have enough arguments in cases when the parsed content is malformed. Remove some dead code. Change-Id: I300a76f82fe174290442c659ca2e84391db361a1 Reviewed-by: Joerg Bornemann --- CMakeLists.txt | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 98b44543..01fca842 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,21 +12,23 @@ enable_testing() set(qt_module_prop_prefix "__qt_prop_") function(extract_git_submodules out_module_list) - set(modules "") set(current_module "") set(module_list "") file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/.gitmodules" lines) foreach(line IN LISTS lines) - string(REGEX REPLACE "^\\[submodule \"([^\"]+)\"\\]$" "\\1" module ${line}) + # Skip empty lines. + if(NOT line) + continue() + endif() + string(REGEX REPLACE "^\\[submodule \"([^\"]+)\"\\]$" "\\1" module "${line}") if (NOT module STREQUAL line) - list(APPEND modules ${modules}) - set(current_module ${module}) - list(APPEND module_list ${module}) + set(current_module "${module}") + list(APPEND module_list "${module}") else() - string(REGEX REPLACE "^\t([^ =]+) *=.*$" "\\1" prop ${line}) + string(REGEX REPLACE "^\t([^ =]+) *=.*$" "\\1" prop "${line}") if (NOT prop STREQUAL line) - string(REGEX REPLACE "^[^=]+= *" "" value ${line}) - string(REPLACE " " ";" value ${value}) + string(REGEX REPLACE "^[^=]+= *" "" value "${line}") + string(REPLACE " " ";" value "${value}") set("${qt_module_prop_prefix}${current_module}_${prop}" "${value}" PARENT_SCOPE) else() message(FATAL_ERROR "Malformed line ${CMAKE_CURRENT_SOURCE_DIR}/.gitmodules: ${line}")