summaryrefslogtreecommitdiffstatshomepage
path: root/roff.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-07-27 14:19:26 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-07-27 14:19:26 +0000
commit7337619b6b88ab8c0311d5851b1d41e664dd44b9 (patch)
treeba665f2f829bf07f3514c6d995da2b636526c99d /roff.c
parent0b9dc937bd863641e56bc9a00c51a9ddca1194c9 (diff)
downloadmandoc-7337619b6b88ab8c0311d5851b1d41e664dd44b9.tar.gz
mandoc-7337619b6b88ab8c0311d5851b1d41e664dd44b9.tar.zst
mandoc-7337619b6b88ab8c0311d5851b1d41e664dd44b9.zip
Fix hyphen-replacement loop.
Diffstat (limited to 'roff.c')
-rw-r--r--roff.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/roff.c b/roff.c
index 4a0140d5..b864085f 100644
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/* $Id: roff.c,v 1.158 2011/07/27 13:47:26 kristaps Exp $ */
+/* $Id: roff.c,v 1.159 2011/07/27 14:19:26 kristaps Exp $ */
/*
* Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010, 2011 Ingo Schwarze <schwarze@openbsd.org>
@@ -530,6 +530,9 @@ roff_parsetext(char *p)
sz = strcspn(p, "-\\");
p += sz;
+ if ('\0' == *p)
+ break;
+
if ('\\' == *p) {
/* Skip over escapes. */
p++;
@@ -538,20 +541,19 @@ roff_parsetext(char *p)
if (ESCAPE_ERROR == esc)
break;
continue;
- } else if ('-' != *p || p == start) {
+ } else if (p == start) {
p++;
continue;
}
l = *(p - 1);
r = *(p + 1);
-
if ('\\' != l &&
'\t' != r && '\t' != l &&
' ' != r && ' ' != l &&
'-' != r && '-' != l &&
! isdigit((unsigned char)l) &&
- ! isdigit((unsigned char)r))
+ ! isdigit((unsigned char)r))
*p = ASCII_HYPH;
p++;
}