mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
eval: Check for return value of memory allocations.
Originally committed as revision 19827 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
7ef618796a
commit
0345f36bbd
@ -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) {
|
|||||||
|
|
||||||
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){
|
|||||||
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){
|
|||||||
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) {
|
|||||||
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) {
|
|||||||
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++;
|
||||||
|
Loading…
Reference in New Issue
Block a user