From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from scc-mailout.scc.kit.edu (scc-mailout.scc.kit.edu [129.13.185.202]) by krisdoz.my.domain (8.14.3/8.14.3) with ESMTP id p9D0oloe030026 for ; Wed, 12 Oct 2011 20:50:48 -0400 (EDT) Received: from hekate.usta.de (asta-nat.asta.uni-karlsruhe.de [172.22.63.82]) by scc-mailout-02 with esmtp (Exim 4.72 #1) id 1RE9VV-00085k-QJ; Thu, 13 Oct 2011 02:50:45 +0200 Received: from donnerwolke.usta.de ([172.24.96.3]) by hekate.usta.de with esmtp (Exim 4.72) (envelope-from ) id 1RE9VV-0003db-PS; Thu, 13 Oct 2011 02:50:45 +0200 Received: from iris.usta.de ([172.24.96.5] helo=usta.de) by donnerwolke.usta.de with esmtp (Exim 4.72) (envelope-from ) id 1RE9VV-0000KY-OW; Thu, 13 Oct 2011 02:50:45 +0200 Received: from schwarze by usta.de with local (Exim 4.72) (envelope-from ) id 1RE9VV-0003qj-N2; Thu, 13 Oct 2011 02:50:45 +0200 Date: Thu, 13 Oct 2011 02:50:45 +0200 From: Ingo Schwarze To: Joerg Sonnenberger Cc: tech@mdocml.bsd.lv Subject: Re: mdocml version 1.12.0 available Message-ID: <20111013005045.GH28987@iris.usta.de> References: <4E90B130.3080008@bsd.lv> <20111011145641.GA25314@britannica.bec.de> X-Mailinglist: mdocml-tech Reply-To: tech@mdocml.bsd.lv MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20111011145641.GA25314@britannica.bec.de> User-Agent: Mutt/1.5.21 (2010-09-15) Hi Joerg, Joerg Sonnenberger wrote on Tue, Oct 11, 2011 at 04:56:41PM +0200: > Attached is the report from clang -analyze. Food for thought ;) Thanks for sending these. Below is a patch to improve style at a few places, none of these are bugs, though. No regressions according to my tests. A few more reports are valid, but i suggest to keep those redundant initializations because it is non-trivial to figure out that all branches actually set a value, so it's safer to initialize up front, especially in view of potential future code changes. Two complaints might be bogus: > /home/joerg/work/NetBSD/cvs/src/external/bsd/mdocml/bin/mandoc/../../dist/mdoc_term.c:617:7: warning: Access to field 'prev' results in a dereference of a null pointer (loaded from variable 'n') > if (n->prev && MDOC_It == n->prev->tok) { > ^ > /home/joerg/work/NetBSD/cvs/src/external/bsd/mdocml/bin/mandoc/../../dist/mdoc_term.c:611:7: warning: Access to field 'prev' results in a dereference of a null pointer (loaded from variable 'n') > if (n->prev && MDOC_It == n->prev->tok) > ^ I have no idea why clang thinks n might be NULL here. Do you understand that? Or is this just a false positive? Yours, Ingo Index: man_validate.c =================================================================== RCS file: /cvs/src/usr.bin/mandoc/man_validate.c,v retrieving revision 1.47 diff -u -p -r1.47 man_validate.c --- man_validate.c 18 Sep 2011 15:54:48 -0000 1.47 +++ man_validate.c 13 Oct 2011 00:04:33 -0000 @@ -209,12 +209,12 @@ check_text(CHKARGS) { char *cp, *p; - cp = p = n->string; - for (cp = p; NULL != (p = strchr(p, '\t')); p++) { - if (MAN_LITERAL & m->flags) - continue; + if (MAN_LITERAL & m->flags) + return; + + cp = n->string; + for (p = cp; NULL != (p = strchr(p, '\t')); p++) man_pmsg(m, n->line, (int)(p - cp), MANDOCERR_BADTAB); - } } #define INEQ_DEFINE(x, ineq, name) \ @@ -470,7 +470,6 @@ post_UC(CHKARGS) const char *p, *s; n = n->child; - n = m->last->child; if (NULL == n || MAN_TEXT != n->type) p = bsd_versions[0]; Index: mdoc_html.c =================================================================== RCS file: /cvs/src/usr.bin/mandoc/mdoc_html.c,v retrieving revision 1.63 diff -u -p -r1.63 mdoc_html.c --- mdoc_html.c 9 Oct 2011 22:10:51 -0000 1.63 +++ mdoc_html.c 13 Oct 2011 00:04:33 -0000 @@ -499,7 +499,7 @@ mdoc_root_post(MDOC_ARGS) print_otag(h, TAG_COL, 1, tag); print_otag(h, TAG_COL, 1, tag); - t = print_otag(h, TAG_TBODY, 0, NULL); + print_otag(h, TAG_TBODY, 0, NULL); tt = print_otag(h, TAG_TR, 0, NULL); Index: mdoc_macro.c =================================================================== RCS file: /cvs/src/usr.bin/mandoc/mdoc_macro.c,v retrieving revision 1.69 diff -u -p -r1.69 mdoc_macro.c --- mdoc_macro.c 18 Sep 2011 15:54:48 -0000 1.69 +++ mdoc_macro.c 13 Oct 2011 00:04:34 -0000 @@ -1428,18 +1428,15 @@ blk_part_exp(MACRO_PROT_ARGS) /* Clean-up to leave in a consistent state. */ - if (NULL == head) { + if (NULL == head) if ( ! mdoc_head_alloc(m, line, ppos, tok)) return(0); - head = m->last; - } if (NULL == body) { if ( ! rew_sub(MDOC_HEAD, m, tok, line, ppos)) return(0); if ( ! mdoc_body_alloc(m, line, ppos, tok)) return(0); - body = m->last; } /* Standard appending of delimiters. */ Index: mdoc_validate.c =================================================================== RCS file: /cvs/src/usr.bin/mandoc/mdoc_validate.c,v retrieving revision 1.95 diff -u -p -r1.95 mdoc_validate.c --- mdoc_validate.c 18 Sep 2011 15:54:48 -0000 1.95 +++ mdoc_validate.c 13 Oct 2011 00:04:34 -0000 @@ -541,12 +541,11 @@ check_text(struct mdoc *m, int ln, int p { char *cp; - cp = p; - for (cp = p; NULL != (p = strchr(p, '\t')); p++) { - if (MDOC_LITERAL & m->flags) - continue; + if (MDOC_LITERAL & m->flags) + return; + + for (cp = p; NULL != (p = strchr(p, '\t')); p++) mdoc_pmsg(m, ln, pos + (int)(p - cp), MANDOCERR_BADTAB); - } } static int Index: term_ps.c =================================================================== RCS file: /cvs/src/usr.bin/mandoc/term_ps.c,v retrieving revision 1.18 diff -u -p -r1.18 term_ps.c --- term_ps.c 18 Sep 2011 15:54:48 -0000 1.18 +++ term_ps.c 13 Oct 2011 00:04:34 -0000 @@ -488,8 +488,7 @@ pspdf_alloc(char *outopts) pagey = 356; } else if (2 != sscanf(pp, "%ux%u", &pagex, &pagey)) fprintf(stderr, "%s: Unknown paper\n", pp); - } else if (NULL == pp) - pp = "letter"; + } /* * This MUST be defined before any PNT2AFM or AFM2PNT @@ -576,7 +575,7 @@ ps_printf(struct termp *p, const char *f ps_growbuf(p, PS_BUFSLOP); pos = (int)p->ps->psmargcur; - len = vsnprintf(&p->ps->psmarg[pos], PS_BUFSLOP, fmt, ap); + vsnprintf(&p->ps->psmarg[pos], PS_BUFSLOP, fmt, ap); va_end(ap); -- To unsubscribe send an email to tech+unsubscribe@mdocml.bsd.lv