[4.1] daf5059 Add REAL add/sub/mul/div REAL support

Lasse Karstensen lkarsten at varnish-software.com
Thu Feb 11 17:14:32 CET 2016


commit daf5059ba69a31020d84cfa6a4dd403c96d40366
Author: Federico G. Schwindt <fgsch at lodoss.net>
Date:   Tue Feb 2 08:43:29 2016 +0000

    Add REAL add/sub/mul/div REAL support
    
    Prompted by someone on #varnish.  OK'd by phk.

diff --git a/bin/varnishtest/tests/v00020.vtc b/bin/varnishtest/tests/v00020.vtc
index a9e9d3b..263b883 100644
--- a/bin/varnishtest/tests/v00020.vtc
+++ b/bin/varnishtest/tests/v00020.vtc
@@ -102,10 +102,18 @@ varnish v1 -vcl {
 
 		set req.http.foo = now + 1s;
 		set req.http.foo = now - 1s;
+
 		set req.http.foo = now - now;
 
 		set req.http.foo = 1 + 1;
 		set req.http.foo = 1 - 1;
+		set req.http.foo = 3 * 2;
+		set req.http.foo = 3 / 2;
+
+		set req.http.foo = 3.6 + 1.4;
+		set req.http.foo = 3.6 - 1.4;
+		set req.http.foo = 3.6 * 1.4;
+		set req.http.foo = 3.6 / 1.4;
 
 		set req.ttl = 1s;
 	}
diff --git a/lib/libvcc/vcc_expr.c b/lib/libvcc/vcc_expr.c
index 5989f07..af3b3e7 100644
--- a/lib/libvcc/vcc_expr.c
+++ b/lib/libvcc/vcc_expr.c
@@ -942,6 +942,7 @@ vcc_expr_mul(struct vcc *tl, struct expr **e, enum var_type fmt)
 	case INT:	f2 = INT; break;
 	case DURATION:	f2 = REAL; break;
 	case BYTES:	f2 = REAL; break;
+	case REAL:	f2 = REAL; break;
 	default:
 		if (tl->t->tok != '*' && tl->t->tok != '/')
 			return;
@@ -1049,6 +1050,8 @@ vcc_expr_add(struct vcc *tl, struct expr **e, enum var_type fmt)
 			/* OK */
 		} else if ((*e)->fmt == INT && e2->fmt == INT) {
 			/* OK */
+		} else if ((*e)->fmt == REAL && e2->fmt == REAL) {
+			/* OK */
 		} else if ((*e)->fmt == DURATION && e2->fmt == DURATION) {
 			/* OK */
 		} else if (tk->tok == '+' &&



More information about the varnish-commit mailing list