summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorru <ru@FreeBSD.org>2002-10-15 10:42:07 +0000
committerru <ru@FreeBSD.org>2002-10-15 10:42:07 +0000
commitf78d5fa81a0b603b2741c98c8f48ce8245a18a4c (patch)
tree5f0ec4aa6f0f7e8a3ae80a5ac7904c91625ae3a3
parent5c810fd127770cd732ca5fdf7e3573d130140768 (diff)
downloadFreeBSD-src-f78d5fa81a0b603b2741c98c8f48ce8245a18a4c.zip
FreeBSD-src-f78d5fa81a0b603b2741c98c8f48ce8245a18a4c.tar.gz
From ChangeLog:
: 2002-10-14 Werner LEMBERG <wl@gnu.org> : : * src/roff/troff/node.cc (troff_output_file::put_char_width, : troff_output_file::put_char, troff_output_file::fill_color, : troff_output_file::glyph_color): Handle case where color pointer : is null. This paniced troff(1) attempting to format the vinum(4) manpage.
-rw-r--r--contrib/groff/src/roff/troff/node.cc13
1 files changed, 8 insertions, 5 deletions
diff --git a/contrib/groff/src/roff/troff/node.cc b/contrib/groff/src/roff/troff/node.cc
index 650bf0e..58a3cd8 100644
--- a/contrib/groff/src/roff/troff/node.cc
+++ b/contrib/groff/src/roff/troff/node.cc
@@ -1014,7 +1014,8 @@ void troff_output_file::put_char_width(charinfo *ci, tfont *tf,
}
else if (tcommand_flag) {
if (tbuf_len > 0 && hpos == output_hpos && vpos == output_vpos
- && gcol == current_glyph_color && fcol == current_fill_color
+ && (!gcol || gcol == current_glyph_color)
+ && (!fcol || fcol == current_fill_color)
&& kk == tbuf_kern
&& tbuf_len < TBUF_SIZE) {
check_charinfo(tf, ci);
@@ -1039,7 +1040,8 @@ void troff_output_file::put_char_width(charinfo *ci, tfont *tf,
check_charinfo(tf, ci);
// check_output_limits(output_hpos, output_vpos);
if (vpos == output_vpos
- && gcol == current_glyph_color && fcol == current_fill_color
+ && (!gcol || gcol == current_glyph_color)
+ && (!fcol || fcol == current_fill_color)
&& n > 0 && n < 100 && !force_motion) {
put(char(n/10 + '0'));
put(char(n%10 + '0'));
@@ -1087,7 +1089,8 @@ void troff_output_file::put_char(charinfo *ci, tfont *tf,
else {
int n = hpos - output_hpos;
if (vpos == output_vpos
- && gcol == current_glyph_color && fcol == current_fill_color
+ && (!gcol || gcol == current_glyph_color)
+ && (!fcol || fcol == current_fill_color)
&& n > 0 && n < 100) {
put(char(n/10 + '0'));
put(char(n%10 + '0'));
@@ -1162,7 +1165,7 @@ void troff_output_file::set_font(tfont *tf)
void troff_output_file::fill_color(color *col)
{
- if ((current_fill_color == col) || !color_flag)
+ if (!col || current_fill_color == col || !color_flag)
return;
flush_tbuf();
put("DF");
@@ -1210,7 +1213,7 @@ void troff_output_file::fill_color(color *col)
void troff_output_file::glyph_color(color *col)
{
- if ((current_glyph_color == col) || !color_flag)
+ if (!col || current_glyph_color == col || !color_flag)
return;
flush_tbuf();
put("m");
OpenPOWER on IntegriCloud