From d235a3e64ca740e4cee57fc85c5270494b9b81fd Mon Sep 17 00:00:00 2001 From: Duncaen Date: Mon, 28 Jan 2019 15:23:27 +0100 Subject: mpick: minor cleanups/memleak fixes for parse_msglist --- mpick.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'mpick.c') diff --git a/mpick.c b/mpick.c index 27ee831..16028a7 100644 --- a/mpick.c +++ b/mpick.c @@ -872,12 +872,13 @@ parse_msglist(char *s) int r; struct expr *e1, *e2; char *d; + enum flags flag; switch (*s) { case '/': s++; e1 = mkexpr(EXPR_REGEXI); - e1->a.string = "subject"; + e1->a.string = xstrdup("subject"); e1->b.regex = malloc(sizeof (regex_t)); r = regcomp(e1->b.regex, s, REG_EXTENDED | REG_NOSUB | REG_ICASE); if (r != 0) { @@ -887,13 +888,10 @@ parse_msglist(char *s) } return e1; case ':': - if (strlen(s) <= 1) - parse_error("missing type at '%.15s'", s); - - enum flags flag; n = 0; switch (*++s) { + case '\0': parse_error("missing flag at '%s'", s-1); case 'P': flag = FLAG_PASSED; break; case 'F': flag = FLAG_FLAGGED; break; case 'D': flag = FLAG_DRAFT; break; @@ -905,7 +903,7 @@ parse_msglist(char *s) case 'o': n = 1; /* FALL THROUGH */ case 'n': flag = FLAG_NEW; 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); @@ -946,9 +944,9 @@ parse_msglist(char *s) blaze822_addr(s, &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->a.prop = PROP_FROM; -- cgit 1.4.1