=================================================================== RCS file: /cvs/mandoc/term.c,v retrieving revision 1.229 retrieving revision 1.232 diff -u -p -r1.229 -r1.232 --- mandoc/term.c 2014/10/26 17:12:03 1.229 +++ mandoc/term.c 2014/10/28 18:49:33 1.232 @@ -1,4 +1,4 @@ -/* $Id: term.c,v 1.229 2014/10/26 17:12:03 schwarze Exp $ */ +/* $Id: term.c,v 1.232 2014/10/28 18:49:33 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010-2014 Ingo Schwarze @@ -42,11 +42,7 @@ void term_free(struct termp *p) { - if (p->buf) - free(p->buf); - if (p->symtab) - mchars_free(p->symtab); - + free(p->buf); free(p); } @@ -462,15 +458,12 @@ term_word(struct termp *p, const char *word) if (p->enc == TERMENC_ASCII) { cp = mchars_spec2str(p->symtab, seq, sz, &ssz); - if (cp == NULL) - encode(p, "", 3); - else + if (cp != NULL) encode(p, cp, ssz); } else { uc = mchars_spec2cp(p->symtab, seq, sz); - if (uc <= 0) - uc = 0xFFFD; - encode1(p, uc); + if (uc > 0) + encode1(p, uc); } break; case ESCAPE_FONTBOLD: @@ -695,19 +688,14 @@ term_strlen(const struct termp *p, const char *cp) sz += cond_width(p, c, &skip); break; case ESCAPE_SPECIAL: - if (p->enc == TERMENC_ASCII) { + if (p->enc == TERMENC_ASCII) rhs = mchars_spec2str(p->symtab, seq, ssz, &rsz); - if (rhs == NULL) { - rhs = ""; - rsz = 3; - } - } else { + else { c = mchars_spec2cp(p->symtab, seq, ssz); - if (c <= 0) - c = 0xFFFD; - sz += cond_width(p, c, &skip); + if (c > 0) + sz += cond_width(p, c, &skip); } break; case ESCAPE_SKIPCHAR: