From 38d5b4a4c3e3bd3bbb7160dce5cacc5ff07aaf04 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 11 Jun 2001 10:18:30 -0400 Subject: [PATCH] BUG: Fixed regular expression used to match registry entries. The expression now matches everything after a [HKEY until the first ']' is encountered. --- Source/cmSystemTools.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index e9efdcc05..3164d61c6 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -270,7 +270,13 @@ bool ReadAValue(std::string &res, const char *key) void cmSystemTools::ExpandRegistryValues(std::string& source) { #if defined(_WIN32) && !defined(__CYGWIN__) - cmRegularExpression regEntry("\\[(HKEY[A-Za-z0-9_~\\:\\-\\(\\)\\.\\; ]*)\\]"); + // Regular expression to match anything inside [...] that begins in HKEY. + // Note that there is a special rule for regular expressions to match a + // close square-bracket inside a list delimited by square brackets. + // The "[^]]" part of this expression will match any character except + // a close square-bracket. The ']' character must be the first in the + // list of characters inside the [^...] block of the expression. + cmRegularExpression regEntry("\\[(HKEY[^]]*)\\]"); // check for black line or comment while (regEntry.find(source))