Skip to content

Commit

Permalink
Merge pull request #9783 from peterrum/ph_pattern_segfault
Browse files Browse the repository at this point in the history
Pass ExcNoMatch the description directly
  • Loading branch information
masterleinad committed Apr 1, 2020
2 parents 3c7a6de + cc10a62 commit 261f131
Showing 1 changed file with 20 additions and 19 deletions.
39 changes: 20 additions & 19 deletions include/deal.II/base/patterns.h
Original file line number Diff line number Diff line change
Expand Up @@ -1411,9 +1411,9 @@ namespace Patterns
*/
DeclException2(ExcNoMatch,
std::string,
const Patterns::PatternBase *,
std::string,
<< "The string " << arg1 << " does not match the pattern \""
<< arg2->description() << "\"");
<< arg2 << "\"");
//@}
} // namespace Tools
} // namespace Patterns
Expand Down Expand Up @@ -1544,7 +1544,8 @@ namespace Patterns
str << (static_cast<bool>(value) ? "true" : "false");
else
str << value;
AssertThrow(p->match(str.str()), ExcNoMatch(str.str(), p.get()));
AssertThrow(p->match(str.str()),
ExcNoMatch(str.str(), p->description()));
return str.str();
}

Expand All @@ -1553,7 +1554,7 @@ namespace Patterns
const std::unique_ptr<Patterns::PatternBase> &p =
Convert<T>::to_pattern())
{
AssertThrow(p->match(s), ExcNoMatch(s, p.get()));
AssertThrow(p->match(s), ExcNoMatch(s, p->description()));
T value;
if (std::is_same<T, bool>::value)
value = (s == "true");
Expand Down Expand Up @@ -1816,7 +1817,7 @@ namespace Patterns
for (unsigned int i = 1; i < vec.size(); ++i)
s += p->get_separator() + " " + vec[i];

AssertThrow(pattern->match(s), ExcNoMatch(s, p));
AssertThrow(pattern->match(s), ExcNoMatch(s, p->description()));
return s;
}

Expand All @@ -1825,7 +1826,7 @@ namespace Patterns
const std::unique_ptr<Patterns::PatternBase> &pattern =
Convert<T>::to_pattern())
{
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern.get()));
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern->description()));

auto p = dynamic_cast<const Patterns::List *>(pattern.get());
AssertThrow(p,
Expand Down Expand Up @@ -1892,7 +1893,7 @@ namespace Patterns
for (unsigned int i = 1; i < vec.size(); ++i)
s += p->get_separator() + " " + vec[i];

AssertThrow(p->match(s), ExcNoMatch(s, p));
AssertThrow(p->match(s), ExcNoMatch(s, p->description()));
return s;
}

Expand All @@ -1901,7 +1902,7 @@ namespace Patterns
const std::unique_ptr<Patterns::PatternBase> &pattern =
Convert<T>::to_pattern())
{
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern.get()));
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern->description()));

auto p = dynamic_cast<const Patterns::Map *>(pattern.get());
AssertThrow(p,
Expand Down Expand Up @@ -1966,7 +1967,7 @@ namespace Patterns
for (unsigned int i = 1; i < vec.size(); ++i)
s += p->get_separator() + " " + vec[i];

AssertThrow(p->match(s), ExcNoMatch(s, p));
AssertThrow(p->match(s), ExcNoMatch(s, p->description()));
return s;
}

Expand All @@ -1975,7 +1976,7 @@ namespace Patterns
const std::unique_ptr<Patterns::PatternBase> &pattern =
Convert<T>::to_pattern())
{
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern.get()));
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern->description()));

auto p = dynamic_cast<const Patterns::List *>(pattern.get());
AssertThrow(p,
Expand Down Expand Up @@ -2062,7 +2063,7 @@ namespace Patterns
for (unsigned int i = 1; i < expressions.size(); ++i)
s = s + p->get_separator() + expressions[i];

AssertThrow(pattern->match(s), ExcNoMatch(s, p));
AssertThrow(pattern->match(s), ExcNoMatch(s, p->description()));
return s;
}

Expand All @@ -2071,7 +2072,7 @@ namespace Patterns
const std::unique_ptr<Patterns::PatternBase> &pattern =
Convert<T>::to_pattern())
{
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern.get()));
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern->description()));

auto p = dynamic_cast<const Patterns::List *>(pattern.get());
AssertThrow(p,
Expand Down Expand Up @@ -2159,7 +2160,7 @@ namespace Patterns
p->get_separator() + " " +
Convert<typename T::value_type>::to_string(t.imag(), base_p);

AssertThrow(pattern->match(s), ExcNoMatch(s, p));
AssertThrow(pattern->match(s), ExcNoMatch(s, p->description()));
return s;
}

Expand All @@ -2171,7 +2172,7 @@ namespace Patterns
const std::unique_ptr<Patterns::PatternBase> &pattern =
Convert<T>::to_pattern())
{
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern.get()));
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern->description()));

auto p = dynamic_cast<const Patterns::List *>(pattern.get());
AssertThrow(p,
Expand Down Expand Up @@ -2205,7 +2206,7 @@ namespace Patterns
const std::unique_ptr<Patterns::PatternBase> &pattern =
Convert<T>::to_pattern())
{
AssertThrow(pattern->match(t), ExcNoMatch(t, pattern.get()));
AssertThrow(pattern->match(t), ExcNoMatch(t, pattern->description()));
return t;
}

Expand All @@ -2214,7 +2215,7 @@ namespace Patterns
const std::unique_ptr<Patterns::PatternBase> &pattern =
Convert<T>::to_pattern())
{
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern.get()));
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern->description()));
return s;
}
};
Expand Down Expand Up @@ -2249,7 +2250,7 @@ namespace Patterns
std::unordered_map<Key, Value> m;
m.insert(t);
std::string s = Convert<decltype(m)>::to_string(m, pattern);
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern.get()));
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern->description()));
return s;
}

Expand Down Expand Up @@ -2294,7 +2295,7 @@ namespace Patterns
std::string str;
for (unsigned int i = 0; i < string_array.size(); ++i)
str += (i ? " " + p->get_separator() + " " : "") + string_array[i];
AssertThrow(p->match(str), ExcNoMatch(str, p));
AssertThrow(p->match(str), ExcNoMatch(str, p->description()));
return str;
}

Expand All @@ -2303,7 +2304,7 @@ namespace Patterns
const std::unique_ptr<Patterns::PatternBase> &pattern =
Convert<T>::to_pattern())
{
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern.get()));
AssertThrow(pattern->match(s), ExcNoMatch(s, pattern->description()));

auto p = dynamic_cast<const Patterns::Tuple *>(pattern.get());
AssertThrow(p,
Expand Down

0 comments on commit 261f131

Please sign in to comment.