| 638 | } |
| 639 | |
| 640 | static int parse_subexpr(AVExpr **e, Parser *p) |
| 641 | { |
| 642 | int ret; |
| 643 | AVExpr *e0, *e1, *e2; |
| 644 | if ((ret = parse_term(&e0, p)) < 0) |
| 645 | return ret; |
| 646 | while (*p->s == '+' || *p->s == '-') { |
| 647 | e1 = e0; |
| 648 | if ((ret = parse_term(&e2, p)) < 0) { |
| 649 | av_expr_free(e1); |
| 650 | return ret; |
| 651 | } |
| 652 | e0 = make_eval_expr(e_add, 1, e1, e2); |
| 653 | if (!e0) { |
| 654 | av_expr_free(e1); |
| 655 | av_expr_free(e2); |
| 656 | return AVERROR(ENOMEM); |
| 657 | } |
| 658 | }; |
| 659 | |
| 660 | *e = e0; |
| 661 | return 0; |
| 662 | } |
| 663 | |
| 664 | static int parse_expr(AVExpr **e, Parser *p) |
| 665 | { |
no test coverage detected