[BACK]Return to engine.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / lib / libc / regex

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/lib/libc/regex/engine.c between version 1.9 and 1.10

version 1.9, 1998/11/14 16:43:49 version 1.10, 1998/12/08 14:00:24
Line 159  int eflags;
Line 159  int eflags;
         if (g->cflags&REG_NOSUB)          if (g->cflags&REG_NOSUB)
                 nmatch = 0;                  nmatch = 0;
         if (eflags&REG_STARTEND) {          if (eflags&REG_STARTEND) {
                 start = string + (size_t)pmatch[0].rm_so;                  start = string + pmatch[0].rm_so;
                 stop = string + (size_t)pmatch[0].rm_eo;                  stop = string + pmatch[0].rm_eo;
         } else {          } else {
                 start = string;                  start = string;
                 stop = start + strlen(start);                  stop = start + strlen(start);
Line 225  int eflags;
Line 225  int eflags;
                         return(REG_ESPACE);                          return(REG_ESPACE);
                 }                  }
                 for (i = 1; i <= m->g->nsub; i++)                  for (i = 1; i <= m->g->nsub; i++)
                         m->pmatch[i].rm_so = m->pmatch[i].rm_eo = -1;                          m->pmatch[i].rm_so = m->pmatch[i].rm_eo = (regoff_t)-1;
                 if (!g->backrefs && !(m->eflags&REG_BACKR)) {                  if (!g->backrefs && !(m->eflags&REG_BACKR)) {
                         NOTE("dissecting");                          NOTE("dissecting");
                         dp = dissect(m, m->coldp, endp, gf, gl);                          dp = dissect(m, m->coldp, endp, gf, gl);
Line 257  int eflags;
Line 257  int eflags;
                         /* try it on a shorter possibility */                          /* try it on a shorter possibility */
 #ifndef NDEBUG  #ifndef NDEBUG
                         for (i = 1; i <= m->g->nsub; i++) {                          for (i = 1; i <= m->g->nsub; i++) {
                                 assert(m->pmatch[i].rm_so == -1);                                  assert(m->pmatch[i].rm_so == (regoff_t)-1);
                                 assert(m->pmatch[i].rm_eo == -1);                                  assert(m->pmatch[i].rm_eo == (regoff_t)-1);
                         }                          }
 #endif  #endif
                         NOTE("backoff dissect");                          NOTE("backoff dissect");
Line 285  int eflags;
Line 285  int eflags;
                         if (i <= m->g->nsub)                          if (i <= m->g->nsub)
                                 pmatch[i] = m->pmatch[i];                                  pmatch[i] = m->pmatch[i];
                         else {                          else {
                                 pmatch[i].rm_so = -1;                                  pmatch[i].rm_so = (regoff_t)-1;
                                 pmatch[i].rm_eo = -1;                                  pmatch[i].rm_eo = (regoff_t)-1;
                         }                          }
         }          }
   
Line 617  sopno lev;   /* PLUS nesting level */
Line 617  sopno lev;   /* PLUS nesting level */
         case OBACK_:            /* the vilest depths */          case OBACK_:            /* the vilest depths */
                 i = OPND(s);                  i = OPND(s);
                 assert(0 < i && i <= m->g->nsub);                  assert(0 < i && i <= m->g->nsub);
                 if (m->pmatch[i].rm_eo == -1)                  if (m->pmatch[i].rm_eo == (regoff_t)-1)
                         return(NULL);                          return(NULL);
                 assert(m->pmatch[i].rm_so != -1);                  assert(m->pmatch[i].rm_so != (regoff_t)-1);
                 len = (size_t)(m->pmatch[i].rm_eo - m->pmatch[i].rm_so);                  len = m->pmatch[i].rm_eo - m->pmatch[i].rm_so;
                 assert(stop - m->beginp >= len);                  assert(stop - m->beginp >= len);
                 if (sp > stop - len)                  if (sp > stop - len)
                         return(NULL);   /* not enough left to match */                          return(NULL);   /* not enough left to match */
                 ssp = m->offp + (size_t)m->pmatch[i].rm_so;                  ssp = m->offp + m->pmatch[i].rm_so;
                 if (memcmp(sp, ssp, len) != 0)                  if (memcmp(sp, ssp, len) != 0)
                         return(NULL);                          return(NULL);
                 while (m->g->strip[ss] != SOP(O_BACK, i))                  while (m->g->strip[ss] != SOP(O_BACK, i))

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

CVSweb <webmaster@jp.NetBSD.org>