From 923bf6b6b20172d100e1515ad7a4f93d3a4b233e Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Thu, 20 Dec 2018 03:41:54 +0000 Subject: Bugfix: When after a \\, \t, or \a, another \t or \a had to be resolved in copy mode within the same argument, the argument got corrupted. Found while working on a loosely related bug report from Fabio Scotoni . --- regress/char/space/esct-man.in | 6 ++++-- regress/char/space/esct-man.out_ascii | 3 ++- regress/char/space/esct-man.out_lint | 2 ++ roff.c | 4 ++-- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/regress/char/space/esct-man.in b/regress/char/space/esct-man.in index f290d9e2..5b886958 100644 --- a/regress/char/space/esct-man.in +++ b/regress/char/space/esct-man.in @@ -1,5 +1,5 @@ -.\" $OpenBSD: esct-man.in,v 1.2 2017/07/04 14:53:23 schwarze Exp $ -.TH SPACE-ESCT-MAN 1 "December 15, 2018" +.\" $OpenBSD: esct-man.in,v 1.4 2018/12/20 03:38:10 schwarze Exp $ +.TH SPACE-ESCT-MAN 1 "December 20, 2018" .SH NAME SPACE-T-MAN \- the t escape sequence in pages with man macros .SH DESCRIPTION @@ -45,3 +45,5 @@ After font macros: .\" XXX not implemented .\" .br .\" .B single\aleader +.br +.B double\t\ttab diff --git a/regress/char/space/esct-man.out_ascii b/regress/char/space/esct-man.out_ascii index 3056cc72..89e41917 100644 --- a/regress/char/space/esct-man.out_ascii +++ b/regress/char/space/esct-man.out_ascii @@ -34,7 +34,8 @@ DDEESSCCRRIIPPTTIIOONN After font macros: ssiinnggllee ttaabb + ddoouubbllee ttaabb -OpenBSD December 15, 2018 SPACE-ESCT-MAN(1) +OpenBSD December 20, 2018 SPACE-ESCT-MAN(1) diff --git a/regress/char/space/esct-man.out_lint b/regress/char/space/esct-man.out_lint index 2fa8ba9c..f94f50bb 100644 --- a/regress/char/space/esct-man.out_lint +++ b/regress/char/space/esct-man.out_lint @@ -4,3 +4,5 @@ mandoc: esct-man.in:14:8: WARNING: tab in filled text mandoc: esct-man.in:34:11: WARNING: tab in filled text mandoc: esct-man.in:36:11: WARNING: tab in filled text mandoc: esct-man.in:44:10: WARNING: tab in filled text +mandoc: esct-man.in:49:10: WARNING: tab in filled text +mandoc: esct-man.in:49:11: WARNING: tab in filled text diff --git a/roff.c b/roff.c index e25a74ef..0304156f 100644 --- a/roff.c +++ b/roff.c @@ -1,4 +1,4 @@ -/* $Id: roff.c,v 1.353 2018/12/18 22:00:02 schwarze Exp $ */ +/* $Id: roff.c,v 1.354 2018/12/20 03:41:54 schwarze Exp $ */ /* * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons * Copyright (c) 2010-2015, 2017, 2018 Ingo Schwarze @@ -1588,7 +1588,7 @@ mandoc_getarg(char **cpp, int ln, int *pos) switch (cp[1]) { case 'a': case 't': - cp[0] = '\t'; + cp[-pairs] = '\t'; /* FALLTHROUGH */ case '\\': pairs++; -- cgit v1.2.3-56-ge451