C++ Mathematical Expression Library (ExprTk) http://www.partow.net/programming/exprtk/index.html
diff --git a/exprtk.hpp b/exprtk.hpp index 9cd92ff..6bab715 100644 --- a/exprtk.hpp +++ b/exprtk.hpp
@@ -14468,7 +14468,7 @@ freefunc6(ff6_functor ff) : exprtk::ifunction<T>(6), f(ff) {} inline T operator()(const T& v0, const T& v1, const T& v2, const T& v3, const T& v4, const T& v5) { return f(v0,v1,v2,v3,v4,v5); } - ff5_functor f; + ff6_functor f; }; template <typename Type, typename RawType> @@ -14953,19 +14953,22 @@ inline symbol_table<T>& operator=(const symbol_table<T>& st) { - if (holder_) + if (this != &st) { - if (0 == --holder_->ref_count) + if (holder_) { - delete holder_; + if (0 == --holder_->ref_count) + { + delete holder_; + } + + holder_ = 0; } - holder_ = 0; + holder_ = st.holder_; + holder_->ref_count++; } - holder_ = st.holder_; - holder_->ref_count++; - return *this; }
diff --git a/exprtk_test.cpp b/exprtk_test.cpp index df5c98c..4743bcd 100644 --- a/exprtk_test.cpp +++ b/exprtk_test.cpp
@@ -3139,6 +3139,7 @@ double foo3(double v0, double v1, double v2) { return v0 + v1 + v2; } double foo4(double v0, double v1, double v2, double v3) { return v0 + v1 + v2 + v3; } double foo5(double v0, double v1, double v2, double v3, double v4) { return v0 + v1 + v2 + v3 + v4; } +double foo6(double v0, double v1, double v2, double v3, double v4, double v5) { return v0 + v1 + v2 + v3 + v4 + v5; } template <typename T> inline bool run_test09() @@ -3241,11 +3242,12 @@ const std::string expression_list[] = { - "foo1(1) == 1", - "foo2(1,2) == (1 + 2)", - "foo3(1,2,3) == (1 + 2 + 3)", - "foo4(1,2,3,4) == (1 + 2 + 3 + 4)", - "foo5(1,2,3,4,5) == (1 + 2 + 3 + 4 + 5)" + "foo1(1) == 1", + "foo2(1,2) == (1 + 2)", + "foo3(1,2,3) == (1 + 2 + 3)", + "foo4(1,2,3,4) == (1 + 2 + 3 + 4)", + "foo5(1,2,3,4,5) == (1 + 2 + 3 + 4 + 5)", + "foo6(1,2,3,4,5,6) == (1 + 2 + 3 + 4 + 5 + 6)" }; const std::size_t expression_list_size = sizeof(expression_list) / sizeof(std::string); @@ -3257,6 +3259,7 @@ symbol_table.add_function("foo3",foo3); symbol_table.add_function("foo4",foo4); symbol_table.add_function("foo5",foo5); + symbol_table.add_function("foo6",foo6); for (std::size_t i = 0; i < expression_list_size; ++i) {
diff --git a/readme.txt b/readme.txt index 24f542b..88e180a 100644 --- a/readme.txt +++ b/readme.txt
@@ -881,7 +881,7 @@ Expressions | | Expressions as in string form A V exprtk::expression | | instances - [s0:'x+1' ]-+ | | +-[e0: x+1] + [s0:'x+1']------+ | | +-[e0: x+1] | | | | [s1:'2z+y']-----+--+ +-->+-[e1: 2z+y] | |