summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2011-07-04 12:26:59 +0100
committerMans Rullgard <mans@mansr.com>2011-07-04 12:31:47 +0100
commit94350ab986dfce1c93fa720baf28b548c60a9879 (patch)
tree80da25e117be1e6cd2b6b1367048e5c9cea53a39
parent74965f2644e3af4d21a1d52841b5b48b2bc0895b (diff)
eval: clear Parser instances before using
This prevents random values from the stack being used as "variables" in expressions. Signed-off-by: Mans Rullgard <mans@mansr.com>
-rw-r--r--libavutil/eval.c4
-rw-r--r--tests/ref/fate/eval2
2 files changed, 3 insertions, 3 deletions
diff --git a/libavutil/eval.c b/libavutil/eval.c
index 8ce687df19..4d55f42664 100644
--- a/libavutil/eval.c
+++ b/libavutil/eval.c
@@ -461,7 +461,7 @@ int av_expr_parse(AVExpr **expr, const char *s,
const char * const *func2_names, double (* const *funcs2)(void *, double, double),
int log_offset, void *log_ctx)
{
- Parser p;
+ Parser p = { 0 };
AVExpr *e = NULL;
char *w = av_malloc(strlen(s) + 1);
char *wp = w;
@@ -506,7 +506,7 @@ end:
double av_expr_eval(AVExpr *e, const double *const_values, void *opaque)
{
- Parser p;
+ Parser p = { 0 };
p.const_values = const_values;
p.opaque = opaque;
diff --git a/tests/ref/fate/eval b/tests/ref/fate/eval
index bcc1a505b0..fb7a925b77 100644
--- a/tests/ref/fate/eval
+++ b/tests/ref/fate/eval
@@ -92,7 +92,7 @@ Evaluating 'st(1, 123); ld(1)'
'st(1, 123); ld(1)' -> 123.000000
Evaluating 'st(0, 1); while(lte(ld(0), 100), st(1, ld(1)+ld(0));st(0, ld(0)+1)); ld(1)'
-'st(0, 1); while(lte(ld(0), 100), st(1, ld(1)+ld(0));st(0, ld(0)+1)); ld(1)' -> 5073.000000
+'st(0, 1); while(lte(ld(0), 100), st(1, ld(1)+ld(0));st(0, ld(0)+1)); ld(1)' -> 4950.000000
Evaluating 'st(1, 1); st(2, 2); st(0, 1); while(lte(ld(0),10), st(3, ld(1)+ld(2)); st(1, ld(2)); st(2, ld(3)); st(0, ld(0)+1)); ld(3)'
'st(1, 1); st(2, 2); st(0, 1); while(lte(ld(0),10), st(3, ld(1)+ld(2)); st(1, ld(2)); st(2, ld(3)); st(0, ld(0)+1)); ld(3)' -> 144.000000