]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix endless loop in mod_expr
authorAnthony Minessale <anthony.minessale@gmail.com>
Fri, 1 Aug 2008 16:00:55 +0000 (16:00 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Fri, 1 Aug 2008 16:00:55 +0000 (16:00 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9217 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/applications/mod_expr/mod_expr.c

index e3573b6016bbbef9089e1636108febacf4bcf1f3..9500ded7d9b06821914587dca90cf027568fd75d 100644 (file)
@@ -52,6 +52,7 @@ SWITCH_STANDARD_API(expr_function)
        char val[512] = "", *p;
        char *m_cmd = NULL;
        size_t len;
+       int ec = 0;
 
        if (switch_strlen_zero(cmd)) {
                goto error;
@@ -126,7 +127,16 @@ SWITCH_STANDARD_API(expr_function)
 
        do {
                err = exprEval(e, &last_expr);
-       } while (err);
+               if (err) {
+                       ec++;
+               } else {
+                       ec = 0;
+               }
+       } while (err && ec < 3);
+
+       if (err) {
+               goto error;
+       }
 
        switch_snprintf(val, sizeof(val), "%0.10f", last_expr);
        for (p = (val + strlen(val) - 1); p != val; p--) {