Only keep leading .Sm inside a list when it immediately precedes
authorschwarze <schwarze@openbsd.org>
Thu, 18 Dec 2014 20:15:31 +0000 (20:15 +0000)
committerschwarze <schwarze@openbsd.org>
Thu, 18 Dec 2014 20:15:31 +0000 (20:15 +0000)
the first .It.  Otherwise, move it out together with whatever
follows.  Fixing an assertion failure found by jsg@ with afl.

regress/usr.bin/mandoc/mdoc/Bl/noIt.in
regress/usr.bin/mandoc/mdoc/Bl/noIt.out_ascii
regress/usr.bin/mandoc/mdoc/Bl/noIt.out_lint
usr.bin/mandoc/mdoc_validate.c

index 5e5b4b4..46d8c0d 100644 (file)
@@ -13,7 +13,9 @@ Tagged text.
 .El
 .Bl -bullet
 Stray text.
-.Em More stray text.
+.Sm off
+.Em More Sy stray Em text.
+.Sm on
 .It
 Bullet point.
 .El
index a7a0f0d..9f603f1 100644 (file)
@@ -7,7 +7,7 @@ D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
      Stray text.  _\bM_\bo_\br_\be _\bs_\bt_\br_\ba_\by _\bt_\be_\bx_\bt_\b.
 
      tag     Tagged text.
-     Stray text.  _\bM_\bo_\br_\be _\bs_\bt_\br_\ba_\b_\bt_\be_\bx_\bt_\b.
+     Stray text.  _\bM_\bo_\br_\bes\bst\btr\bra\bay\by_\bt_\be_\bx_\bt_\b.
 
      +\b+\bo\bo   Bullet point.
      Stray text only.
index 00f22c9..efe0eee 100644 (file)
@@ -1,5 +1,8 @@
 mandoc: noIt.in:9:1: WARNING: moving content out of list: text
 mandoc: noIt.in:10:2: WARNING: moving content out of list: Em
 mandoc: noIt.in:15:1: WARNING: moving content out of list: text
-mandoc: noIt.in:16:2: WARNING: moving content out of list: Em
-mandoc: noIt.in:21:1: WARNING: moving content out of list: text
+mandoc: noIt.in:16:2: WARNING: moving content out of list: Sm
+mandoc: noIt.in:17:2: WARNING: moving content out of list: Em
+mandoc: noIt.in:17:10: WARNING: moving content out of list: Sy
+mandoc: noIt.in:17:19: WARNING: moving content out of list: Em
+mandoc: noIt.in:23:1: WARNING: moving content out of list: text
index 003dcbe..760592f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mdoc_validate.c,v 1.180 2014/12/18 19:22:47 schwarze Exp $ */
+/*     $OpenBSD: mdoc_validate.c,v 1.181 2014/12/18 20:15:31 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010-2014 Ingo Schwarze <schwarze@openbsd.org>
@@ -1475,7 +1475,10 @@ post_bl(POST_ARGS)
 
        nchild = nbody->child;
        while (NULL != nchild) {
-               if (MDOC_It == nchild->tok || MDOC_Sm == nchild->tok) {
+               if (nchild->tok == MDOC_It ||
+                   (nchild->tok == MDOC_Sm &&
+                    nchild->next != NULL &&
+                    nchild->next->tok == MDOC_It)) {
                        nchild = nchild->next;
                        continue;
                }