Mercurial > libavcodec.hg
changeset 10168:6eded00bb689 libavcodec
eval: Check for return value of memory allocations.
author | ramiro |
---|---|
date | Sat, 12 Sep 2009 17:59:19 +0000 |
parents | 0c6cba648271 |
children | a48c43551737 |
files | eval.c |
diffstat | 1 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/eval.c Fri Sep 11 19:39:40 2009 +0000 +++ b/eval.c Sat Sep 12 17:59:19 2009 +0000 @@ -185,6 +185,9 @@ char *next= p->s; int i; + if (!d) + return NULL; + /* number */ d->value = av_strtod(p->s, &next); if(next != p->s){ @@ -288,6 +291,8 @@ static AVEvalExpr * new_eval_expr(int type, int value, AVEvalExpr *p0, AVEvalExpr *p1){ AVEvalExpr * e = av_mallocz(sizeof(AVEvalExpr)); + if (!e) + return NULL; e->type =type ; e->value =value ; e->param[0] =p0 ; @@ -307,6 +312,8 @@ while(p->s[0]=='^'){ p->s++; e= new_eval_expr(e_pow, 1, e, parse_pow(p, &sign2)); + if (!e) + return NULL; if (e->param[1]) e->param[1]->value *= (sign2|1); } if (e) e->value *= (sign|1); @@ -318,6 +325,8 @@ while(p->s[0]=='*' || p->s[0]=='/'){ int c= *p->s++; e= new_eval_expr(c == '*' ? e_mul : e_div, 1, e, parse_factor(p)); + if (!e) + return NULL; } return e; } @@ -326,6 +335,8 @@ AVEvalExpr * e = parse_term(p); while(*p->s == '+' || *p->s == '-') { e= new_eval_expr(e_add, 1, e, parse_term(p)); + if (!e) + return NULL; }; return e; @@ -343,6 +354,8 @@ while(*p->s == ';') { p->s++; e= new_eval_expr(e_last, 1, e, parse_subexpr(p)); + if (!e) + return NULL; }; p->stack_index++;