From 4dd2a8a7ccf86a28d23e192c1a379a1f638e4be7 Mon Sep 17 00:00:00 2001
From: Arash Partow <partow@gmail.com>
Date: Mon, 13 Apr 2015 19:38:34 +1000
Subject: [PATCH] C++ Mathematical Expression Library (ExprTk) 
 http://www.partow.net/programming/exprtk/index.html

---
 exprtk.hpp | 35 ++++++++++++++++-------------------
 1 file changed, 16 insertions(+), 19 deletions(-)

diff --git a/exprtk.hpp b/exprtk.hpp
index ae99b02..a3d14ea 100644
--- a/exprtk.hpp
+++ b/exprtk.hpp
@@ -9842,27 +9842,24 @@ namespace exprtk
                   range_list_[i].type_size = sizeof(char);
                   range_list_[i].str_node  = sbn;
 
-                  if (is_generally_string_node(arg_list_[i]))
+                  range_interface_t* ri = reinterpret_cast<range_interface_t*>(0);
+
+                  if (0 == (ri = dynamic_cast<range_interface_t*>(arg_list_[i])))
+                     return false;
+
+                  range_t& rp = ri->range_ref();
+
+                  if (
+                       rp.const_range() &&
+                       is_const_string_range_node(arg_list_[i])
+                     )
                   {
-                     range_interface_t* ri = reinterpret_cast<range_interface_t*>(0);
-
-                     if (0 == (ri = dynamic_cast<range_interface_t*>(arg_list_[i])))
-                        return false;
-
-                     range_t& rp = ri->range_ref();
-
-                     if (
-                          rp.const_range() &&
-                          is_const_string_range_node(arg_list_[i])
-                        )
-                     {
-                        ts.size = rp.const_size();
-                        ts.data = static_cast<char*>(ts.data) + rp.n0_c.second;
-                        range_list_[i].range = reinterpret_cast<range_t*>(0);
-                     }
-                     else
-                        range_list_[i].range = &(ri->range_ref());
+                     ts.size = rp.const_size();
+                     ts.data = static_cast<char*>(ts.data) + rp.n0_c.second;
+                     range_list_[i].range = reinterpret_cast<range_t*>(0);
                   }
+                  else
+                     range_list_[i].range = &(ri->range_ref());
                }
                else if (is_variable_node(arg_list_[i]))
                {