[BACK]Return to mdoc.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

Diff for /mandoc/mdoc.c between version 1.153 and 1.156

version 1.153, 2010/07/01 22:35:54 version 1.156, 2010/07/02 12:54:33
Line 514  mdoc_word_alloc(struct mdoc *m, int line, int pos, con
Line 514  mdoc_word_alloc(struct mdoc *m, int line, int pos, con
 }  }
   
   
 void  static void
 mdoc_node_free(struct mdoc_node *p)  mdoc_node_free(struct mdoc_node *p)
 {  {
   
           /*
            * XXX: if these end up being problematic in terms of memory
            * management and dereferencing freed blocks, then make them
            * into reference-counted double-pointers.
            */
   
           if (MDOC_Bd == p->tok && MDOC_BLOCK == p->type)
                   if (p->data.Bd)
                           free(p->data.Bd);
           if (MDOC_Bl == p->tok && MDOC_BLOCK == p->type)
                   if (p->data.Bl)
                           free(p->data.Bl);
           if (MDOC_Bf == p->tok && MDOC_HEAD == p->type)
                   if (p->data.Bf)
                           free(p->data.Bf);
   
         if (p->string)          if (p->string)
                 free(p->string);                  free(p->string);
         if (p->args)          if (p->args)
Line 610  mdoc_ptext(struct mdoc *m, int line, char *buf, int of
Line 626  mdoc_ptext(struct mdoc *m, int line, char *buf, int of
          */           */
   
         if (MDOC_Bl == n->tok && MDOC_BODY == n->type &&          if (MDOC_Bl == n->tok && MDOC_BODY == n->type &&
                         LIST_column == n->data.Bl.type) {                          LIST_column == n->data.Bl->type) {
                 /* `Bl' is open without any children. */                  /* `Bl' is open without any children. */
                 m->flags |= MDOC_FREECOL;                  m->flags |= MDOC_FREECOL;
                 return(mdoc_macro(m, MDOC_It, line, offs, &offs, buf));                  return(mdoc_macro(m, MDOC_It, line, offs, &offs, buf));
Line 619  mdoc_ptext(struct mdoc *m, int line, char *buf, int of
Line 635  mdoc_ptext(struct mdoc *m, int line, char *buf, int of
         if (MDOC_It == n->tok && MDOC_BLOCK == n->type &&          if (MDOC_It == n->tok && MDOC_BLOCK == n->type &&
                         NULL != n->parent &&                          NULL != n->parent &&
                         MDOC_Bl == n->parent->tok &&                          MDOC_Bl == n->parent->tok &&
                         LIST_column == n->parent->data.Bl.type) {                          LIST_column == n->parent->data.Bl->type) {
                 /* `Bl' has block-level `It' children. */                  /* `Bl' has block-level `It' children. */
                 m->flags |= MDOC_FREECOL;                  m->flags |= MDOC_FREECOL;
                 return(mdoc_macro(m, MDOC_It, line, offs, &offs, buf));                  return(mdoc_macro(m, MDOC_It, line, offs, &offs, buf));
Line 731  macrowarn(struct mdoc *m, int ln, const char *buf, int
Line 747  macrowarn(struct mdoc *m, int ln, const char *buf, int
  * Parse a macro line, that is, a line beginning with the control   * Parse a macro line, that is, a line beginning with the control
  * character.   * character.
  */   */
 int  static int
 mdoc_pmacro(struct mdoc *m, int ln, char *buf, int offs)  mdoc_pmacro(struct mdoc *m, int ln, char *buf, int offs)
 {  {
         enum mdoct        tok;          enum mdoct        tok;
Line 825  mdoc_pmacro(struct mdoc *m, int ln, char *buf, int off
Line 841  mdoc_pmacro(struct mdoc *m, int ln, char *buf, int off
          */           */
   
         if (MDOC_Bl == n->tok && MDOC_BODY == n->type &&          if (MDOC_Bl == n->tok && MDOC_BODY == n->type &&
                         LIST_column == n->data.Bl.type) {                          LIST_column == n->data.Bl->type) {
                 m->flags |= MDOC_FREECOL;                  m->flags |= MDOC_FREECOL;
                 if ( ! mdoc_macro(m, MDOC_It, ln, sv, &sv, buf))                  if ( ! mdoc_macro(m, MDOC_It, ln, sv, &sv, buf))
                         goto err;                          goto err;
Line 841  mdoc_pmacro(struct mdoc *m, int ln, char *buf, int off
Line 857  mdoc_pmacro(struct mdoc *m, int ln, char *buf, int off
         if (MDOC_It == n->tok && MDOC_BLOCK == n->type &&          if (MDOC_It == n->tok && MDOC_BLOCK == n->type &&
                         NULL != n->parent &&                          NULL != n->parent &&
                         MDOC_Bl == n->parent->tok &&                          MDOC_Bl == n->parent->tok &&
                         LIST_column == n->parent->data.Bl.type) {                          LIST_column == n->parent->data.Bl->type) {
                 m->flags |= MDOC_FREECOL;                  m->flags |= MDOC_FREECOL;
                 if ( ! mdoc_macro(m, MDOC_It, ln, sv, &sv, buf))                  if ( ! mdoc_macro(m, MDOC_It, ln, sv, &sv, buf))
                         goto err;                          goto err;

Legend:
Removed from v.1.153  
changed lines
  Added in v.1.156

CVSweb