mpick: minor cleanups/memleak fixes for parse_msglist

pull/174/head
Duncaen 5 years ago committed by Leah Neukirchen
parent 482bbffd2c
commit d235a3e64c

@ -872,12 +872,13 @@ parse_msglist(char *s)
int r; int r;
struct expr *e1, *e2; struct expr *e1, *e2;
char *d; char *d;
enum flags flag;
switch (*s) { switch (*s) {
case '/': case '/':
s++; s++;
e1 = mkexpr(EXPR_REGEXI); e1 = mkexpr(EXPR_REGEXI);
e1->a.string = "subject"; e1->a.string = xstrdup("subject");
e1->b.regex = malloc(sizeof (regex_t)); e1->b.regex = malloc(sizeof (regex_t));
r = regcomp(e1->b.regex, s, REG_EXTENDED | REG_NOSUB | REG_ICASE); r = regcomp(e1->b.regex, s, REG_EXTENDED | REG_NOSUB | REG_ICASE);
if (r != 0) { if (r != 0) {
@ -887,13 +888,10 @@ parse_msglist(char *s)
} }
return e1; return e1;
case ':': case ':':
if (strlen(s) <= 1)
parse_error("missing type at '%.15s'", s);
enum flags flag;
n = 0; n = 0;
switch (*++s) { switch (*++s) {
case '\0': parse_error("missing flag at '%s'", s-1);
case 'P': flag = FLAG_PASSED; break; case 'P': flag = FLAG_PASSED; break;
case 'F': flag = FLAG_FLAGGED; break; case 'F': flag = FLAG_FLAGGED; break;
case 'D': flag = FLAG_DRAFT; break; case 'D': flag = FLAG_DRAFT; break;
@ -905,7 +903,7 @@ parse_msglist(char *s)
case 'o': n = 1; /* FALL THROUGH */ case 'o': n = 1; /* FALL THROUGH */
case 'n': flag = FLAG_NEW; break; case 'n': flag = FLAG_NEW; break;
case 'R': flag = FLAG_REPLIED; break; case 'R': flag = FLAG_REPLIED; break;
default: parse_error("unknown type at '%.15s'", s); default: parse_error("unknown flag at '%s'", s);
} }
e1 = mkexpr(EXPR_ANYSET); e1 = mkexpr(EXPR_ANYSET);
@ -946,9 +944,9 @@ parse_msglist(char *s)
blaze822_addr(s, &disp, &addr); blaze822_addr(s, &disp, &addr);
if (!disp && !addr) if (!disp && !addr)
parse_error("invalid address at '%.15s'", pos); parse_error("invalid address '%s'", s);
d = xstrdup((disp) ? disp : addr); d = (disp) ? disp : addr;
e1 = mkexpr(EXPR_REGEXI); e1 = mkexpr(EXPR_REGEXI);
e1->a.prop = PROP_FROM; e1->a.prop = PROP_FROM;

Loading…
Cancel
Save