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

Diff for /mandoc/eqn.c between version 1.73 and 1.74

version 1.73, 2017/07/05 15:03:27 version 1.74, 2017/07/06 00:19:54
Line 819  next_tok:
Line 819  next_tok:
                         ep->gsize = size;                          ep->gsize = size;
                         break;                          break;
                 }                  }
                   while (parent->args == parent->expectargs)
                           parent = parent->parent;
                 parent = eqn_box_alloc(ep, parent);                  parent = eqn_box_alloc(ep, parent);
                 parent->type = EQN_LIST;                  parent->type = EQN_LIST;
                 parent->expectargs = 1;                  parent->expectargs = 1;
Line 840  next_tok:
Line 842  next_tok:
                         cur->type = EQN_TEXT;                          cur->type = EQN_TEXT;
                         cur->text = mandoc_strdup("");                          cur->text = mandoc_strdup("");
                 }                  }
                 /* Handle the "subsup" and "fromto" positions. */                  while (parent->expectargs == 1 && parent->args == 1)
                 if (EQN_TOK_SUP == tok && parent->pos == EQNPOS_SUB) {                          parent = parent->parent;
                   if (tok == EQN_TOK_FROM || tok == EQN_TOK_TO)  {
                           for (cur = parent; cur != NULL; cur = cur->parent)
                                   if (cur->pos == EQNPOS_SUB ||
                                       cur->pos == EQNPOS_SUP ||
                                       cur->pos == EQNPOS_SUBSUP ||
                                       cur->pos == EQNPOS_SQRT ||
                                       cur->pos == EQNPOS_OVER)
                                           break;
                           if (cur != NULL)
                                   parent = cur->parent;
                   }
                   if (tok == EQN_TOK_SUP && parent->pos == EQNPOS_SUB) {
                         parent->expectargs = 3;                          parent->expectargs = 3;
                         parent->pos = EQNPOS_SUBSUP;                          parent->pos = EQNPOS_SUBSUP;
                         break;                          break;
                 }                  }
                 if (EQN_TOK_TO == tok && parent->pos == EQNPOS_FROM) {                  if (tok == EQN_TOK_TO && parent->pos == EQNPOS_FROM) {
                         parent->expectargs = 3;                          parent->expectargs = 3;
                         parent->pos = EQNPOS_FROMTO;                          parent->pos = EQNPOS_FROMTO;
                         break;                          break;
Line 895  next_tok:
Line 909  next_tok:
                         cur->type = EQN_TEXT;                          cur->type = EQN_TEXT;
                         cur->text = mandoc_strdup("");                          cur->text = mandoc_strdup("");
                 }                  }
                   while (parent->args == parent->expectargs)
                           parent = parent->parent;
                 while (EQN_SUBEXPR == parent->type)                  while (EQN_SUBEXPR == parent->type)
                         parent = parent->parent;                          parent = parent->parent;
                 parent = eqn_box_makebinary(ep, EQNPOS_OVER, parent);                  parent = eqn_box_makebinary(ep, EQNPOS_OVER, parent);
Line 1099  next_tok:
Line 1115  next_tok:
                                 parent = split->parent;                                  parent = split->parent;
                         break;                          break;
                 }                  }
                 /*  
                  * Post-process list status.  
                  */  
                 while (parent->type == EQN_LIST &&  
                     parent->expectargs == 1 &&  
                     parent->args == 1)  
                         parent = parent->parent;  
                 break;                  break;
         default:          default:
                 abort();                  abort();

Legend:
Removed from v.1.73  
changed lines
  Added in v.1.74

CVSweb