Commit 19a98b08 authored by ramiro's avatar ramiro

eval: Check for return value of memory allocations.

git-svn-id: file:///var/local/repositories/ffmpeg/trunk@19827 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 15816e25
...@@ -185,6 +185,9 @@ static AVEvalExpr * parse_primary(Parser *p) { ...@@ -185,6 +185,9 @@ static AVEvalExpr * parse_primary(Parser *p) {
char *next= p->s; char *next= p->s;
int i; int i;
if (!d)
return NULL;
/* number */ /* number */
d->value = av_strtod(p->s, &next); d->value = av_strtod(p->s, &next);
if(next != p->s){ if(next != p->s){
...@@ -288,6 +291,8 @@ static AVEvalExpr * parse_primary(Parser *p) { ...@@ -288,6 +291,8 @@ static AVEvalExpr * parse_primary(Parser *p) {
static AVEvalExpr * new_eval_expr(int type, int value, AVEvalExpr *p0, AVEvalExpr *p1){ static AVEvalExpr * new_eval_expr(int type, int value, AVEvalExpr *p0, AVEvalExpr *p1){
AVEvalExpr * e = av_mallocz(sizeof(AVEvalExpr)); AVEvalExpr * e = av_mallocz(sizeof(AVEvalExpr));
if (!e)
return NULL;
e->type =type ; e->type =type ;
e->value =value ; e->value =value ;
e->param[0] =p0 ; e->param[0] =p0 ;
...@@ -307,6 +312,8 @@ static AVEvalExpr * parse_factor(Parser *p){ ...@@ -307,6 +312,8 @@ static AVEvalExpr * parse_factor(Parser *p){
while(p->s[0]=='^'){ while(p->s[0]=='^'){
p->s++; p->s++;
e= new_eval_expr(e_pow, 1, e, parse_pow(p, &sign2)); 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->param[1]) e->param[1]->value *= (sign2|1);
} }
if (e) e->value *= (sign|1); if (e) e->value *= (sign|1);
...@@ -318,6 +325,8 @@ static AVEvalExpr * parse_term(Parser *p){ ...@@ -318,6 +325,8 @@ static AVEvalExpr * parse_term(Parser *p){
while(p->s[0]=='*' || p->s[0]=='/'){ while(p->s[0]=='*' || p->s[0]=='/'){
int c= *p->s++; int c= *p->s++;
e= new_eval_expr(c == '*' ? e_mul : e_div, 1, e, parse_factor(p)); e= new_eval_expr(c == '*' ? e_mul : e_div, 1, e, parse_factor(p));
if (!e)
return NULL;
} }
return e; return e;
} }
...@@ -326,6 +335,8 @@ static AVEvalExpr * parse_subexpr(Parser *p) { ...@@ -326,6 +335,8 @@ static AVEvalExpr * parse_subexpr(Parser *p) {
AVEvalExpr * e = parse_term(p); AVEvalExpr * e = parse_term(p);
while(*p->s == '+' || *p->s == '-') { while(*p->s == '+' || *p->s == '-') {
e= new_eval_expr(e_add, 1, e, parse_term(p)); e= new_eval_expr(e_add, 1, e, parse_term(p));
if (!e)
return NULL;
}; };
return e; return e;
...@@ -343,6 +354,8 @@ static AVEvalExpr * parse_expr(Parser *p) { ...@@ -343,6 +354,8 @@ static AVEvalExpr * parse_expr(Parser *p) {
while(*p->s == ';') { while(*p->s == ';') {
p->s++; p->s++;
e= new_eval_expr(e_last, 1, e, parse_subexpr(p)); e= new_eval_expr(e_last, 1, e, parse_subexpr(p));
if (!e)
return NULL;
}; };
p->stack_index++; p->stack_index++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment