diff --git a/src/OSspecific/Unix/regularExpression.H b/src/OSspecific/Unix/regularExpression.H index 9924caef28fb7ecec52a9d272a91aa3328b8e6ba..fed14379ad917906960e587e9d7b67eb648cfa45 100644 --- a/src/OSspecific/Unix/regularExpression.H +++ b/src/OSspecific/Unix/regularExpression.H @@ -37,6 +37,8 @@ SourceFiles #include <sys/types.h> #include <regex.h> +#include "string.H" +#include "IOstreams.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -73,7 +75,7 @@ public: { preg_ = new regex_t; - if (regcomp(preg_, s.c_str(), REG_EXTENDED|REG_NOSUB) != 0) + if (regcomp(preg_, s.c_str(), REG_EXTENDED) != 0) { FatalErrorIn ( @@ -102,10 +104,12 @@ public: //- Matches? inline bool matches(const string& s) const { - size_t nmatch = 0; - regmatch_t *pmatch = NULL; + size_t nmatch = 1; + regmatch_t pmatch[1]; - return regexec(preg_, s.c_str(), nmatch, pmatch, 0) == 0; + int errVal = regexec(preg_, s.c_str(), nmatch, pmatch, 0); + + return (errVal == 0 && pmatch[0].rm_eo == label(s.size())); } }; diff --git a/src/OpenFOAM/db/dictionary/dictionary.C b/src/OpenFOAM/db/dictionary/dictionary.C index ad960e7405779f5cfb38063d6f246dbd84d7bc56..265a2944cb03bb1f4c2b5f9024ad2c644002d885 100644 --- a/src/OpenFOAM/db/dictionary/dictionary.C +++ b/src/OpenFOAM/db/dictionary/dictionary.C @@ -27,6 +27,7 @@ License #include "dictionary.H" #include "primitiveEntry.H" #include "dictionaryEntry.H" +#include "regularExpression.H" /* * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * */ diff --git a/src/OpenFOAM/db/dictionary/dictionary.H b/src/OpenFOAM/db/dictionary/dictionary.H index ac6ca6538968f56524931d0d6a84e2bf4c1f6370..b1d0d186f65c44c4026b7c06489b8164f0b1f277 100644 --- a/src/OpenFOAM/db/dictionary/dictionary.H +++ b/src/OpenFOAM/db/dictionary/dictionary.H @@ -60,7 +60,6 @@ SourceFiles #include "HashTable.H" #include "wordList.H" #include "className.H" -#include "regularExpression.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -68,7 +67,7 @@ namespace Foam { // Forward declaration of friend functions and operators - +class regularExpression; class dictionary; Istream& operator>>(Istream&, dictionary&); Ostream& operator<<(Ostream&, const dictionary&); diff --git a/src/OpenFOAM/db/dictionary/dictionaryIO.C b/src/OpenFOAM/db/dictionary/dictionaryIO.C index b1d5fbcbc452f760e8d7805a4764fdd0e7240fa2..cb04194915c19fa99d86dfe1ed32ab9d82e7274c 100644 --- a/src/OpenFOAM/db/dictionary/dictionaryIO.C +++ b/src/OpenFOAM/db/dictionary/dictionaryIO.C @@ -27,6 +27,7 @@ License #include "dictionary.H" #include "IFstream.H" #include "inputModeEntry.H" +#include "regularExpression.H" // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //