diff --git a/libavcodec/eval.c b/libavcodec/eval.c index 95e93107f8..1d52ba582b 100644 --- a/libavcodec/eval.c +++ b/libavcodec/eval.c @@ -369,8 +369,12 @@ AVEvalExpr * ff_parse(const char *s, const char * const *const_name, double (**func2)(void *, double, double), const char **func2_name, const char **error){ Parser p; - AVEvalExpr * e; - char w[strlen(s) + 1], * wp = w; + AVEvalExpr *e = NULL; + char *w = av_malloc(strlen(s) + 1); + char *wp = w; + + if (!w) + goto end; while (*s) if (!isspace(*s++)) *wp++ = s[-1]; @@ -388,8 +392,10 @@ AVEvalExpr * ff_parse(const char *s, const char * const *const_name, e = parse_expr(&p); if (!verify_expr(e)) { ff_eval_free(e); - return NULL; + e = NULL; } +end: + av_free(w); return e; }