]> git.saurik.com Git - apple/libc.git/blobdiff - regex/FreeBSD/engine.c.patch
Libc-391.tar.gz
[apple/libc.git] / regex / FreeBSD / engine.c.patch
diff --git a/regex/FreeBSD/engine.c.patch b/regex/FreeBSD/engine.c.patch
new file mode 100644 (file)
index 0000000..1202eb5
--- /dev/null
@@ -0,0 +1,158 @@
+--- engine.c.orig      2004-11-25 11:38:32.000000000 -0800
++++ engine.c   2005-02-24 14:25:22.000000000 -0800
+@@ -270,7 +270,7 @@
+                               break;
+                       assert(m->coldp < m->endp);
+                       m->coldp += XMBRTOWC(NULL, m->coldp,
+-                          m->endp - m->coldp, &m->mbs, 0);
++                          m->endp - m->coldp, &m->mbs, 0, g->loc);
+               }
+               if (nmatch == 1 && !g->backrefs)
+                       break;          /* no further info needed */
+@@ -331,7 +331,7 @@
+               NOTE("false alarm");
+               /* recycle starting later */
+               start = m->coldp + XMBRTOWC(NULL, m->coldp,
+-                  m->endp - m->coldp, &m->mbs, 0);
++                  m->endp - m->coldp, &m->mbs, 0, g->loc);
+               assert(start <= stop);
+       }
+@@ -409,7 +409,7 @@
+                       assert(nope);
+                       break;
+               case OCHAR:
+-                      sp += XMBRTOWC(NULL, sp, stop - start, &m->mbs, 0);
++                      sp += XMBRTOWC(NULL, sp, stop - start, &m->mbs, 0, m->g->loc);
+                       break;
+               case OBOL:
+               case OEOL:
+@@ -418,7 +418,7 @@
+                       break;
+               case OANY:
+               case OANYOF:
+-                      sp += XMBRTOWC(NULL, sp, stop - start, &m->mbs, 0);
++                      sp += XMBRTOWC(NULL, sp, stop - start, &m->mbs, 0, m->g->loc);
+                       break;
+               case OBACK_:
+               case O_BACK:
+@@ -585,14 +585,14 @@
+               case OCHAR:
+                       if (sp == stop)
+                               return(NULL);
+-                      sp += XMBRTOWC(&wc, sp, stop - sp, &m->mbs, BADCHAR);
++                      sp += XMBRTOWC(&wc, sp, stop - sp, &m->mbs, BADCHAR, m->g->loc);
+                       if (wc != OPND(s))
+                               return(NULL);
+                       break;
+               case OANY:
+                       if (sp == stop)
+                               return(NULL);
+-                      sp += XMBRTOWC(&wc, sp, stop - sp, &m->mbs, BADCHAR);
++                      sp += XMBRTOWC(&wc, sp, stop - sp, &m->mbs, BADCHAR, m->g->loc);
+                       if (wc == BADCHAR)
+                               return (NULL);
+                       break;
+@@ -600,8 +600,8 @@
+                       if (sp == stop)
+                               return (NULL);
+                       cs = &m->g->sets[OPND(s)];
+-                      sp += XMBRTOWC(&wc, sp, stop - sp, &m->mbs, BADCHAR);
+-                      if (wc == BADCHAR || !CHIN(cs, wc))
++                      sp += XMBRTOWC(&wc, sp, stop - sp, &m->mbs, BADCHAR, m->g->loc);
++                      if (wc == BADCHAR || !CHIN(cs, wc, m->g->loc))
+                               return(NULL);
+                       break;
+               case OBOL:
+@@ -625,8 +625,8 @@
+                                       (sp < m->endp && *(sp-1) == '\n' &&
+                                               (m->g->cflags&REG_NEWLINE)) ||
+                                       (sp > m->beginp &&
+-                                                      !ISWORD(*(sp-1))) ) &&
+-                                      (sp < m->endp && ISWORD(*sp)) )
++                                                      !ISWORD(*(sp-1), m->g->loc)) ) &&
++                                      (sp < m->endp && ISWORD(*sp, m->g->loc)) )
+                               { /* yes */ }
+                       else
+                               return(NULL);
+@@ -635,8 +635,8 @@
+                       if (( (sp == m->endp && !(m->eflags&REG_NOTEOL)) ||
+                                       (sp < m->endp && *sp == '\n' &&
+                                               (m->g->cflags&REG_NEWLINE)) ||
+-                                      (sp < m->endp && !ISWORD(*sp)) ) &&
+-                                      (sp > m->beginp && ISWORD(*(sp-1))) )
++                                      (sp < m->endp && !ISWORD(*sp, m->g->loc)) ) &&
++                                      (sp > m->beginp && ISWORD(*(sp-1), m->g->loc)) )
+                               { /* yes */ }
+                       else
+                               return(NULL);
+@@ -807,7 +807,7 @@
+               if (p == m->endp)
+                       c = OUT;
+               else
+-                      clen = XMBRTOWC(&c, p, m->endp - p, &m->mbs, BADCHAR);
++                      clen = XMBRTOWC(&c, p, m->endp - p, &m->mbs, BADCHAR, m->g->loc);
+               if (EQ(st, fresh))
+                       coldp = p;
+@@ -831,12 +831,12 @@
+               }
+               /* how about a word boundary? */
+-              if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) &&
+-                                      (c != OUT && ISWORD(c)) ) {
++              if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc, m->g->loc))) &&
++                                      (c != OUT && ISWORD(c, m->g->loc)) ) {
+                       flagch = BOW;
+               }
+-              if ( (lastc != OUT && ISWORD(lastc)) &&
+-                              (flagch == EOL || (c != OUT && !ISWORD(c))) ) {
++              if ( (lastc != OUT && ISWORD(lastc, m->g->loc)) &&
++                              (flagch == EOL || (c != OUT && !ISWORD(c, m->g->loc))) ) {
+                       flagch = EOW;
+               }
+               if (flagch == BOW || flagch == EOW) {
+@@ -861,7 +861,7 @@
+       assert(coldp != NULL);
+       m->coldp = coldp;
+       if (ISSET(st, stopst))
+-              return(p+XMBRTOWC(NULL, p, m->endp - p, &m->mbs, 0));
++              return(p+XMBRTOWC(NULL, p, m->endp - p, &m->mbs, 0, m->g->loc));
+       else
+               return(NULL);
+ }
+@@ -913,7 +913,7 @@
+                       c = OUT;
+                       clen = 0;
+               } else
+-                      clen = XMBRTOWC(&c, p, m->endp - p, &m->mbs, BADCHAR);
++                      clen = XMBRTOWC(&c, p, m->endp - p, &m->mbs, BADCHAR, m->g->loc);
+               /* is there an EOL and/or BOL between lastc and c? */
+               flagch = '\0';
+@@ -935,12 +935,12 @@
+               }
+               /* how about a word boundary? */
+-              if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) &&
+-                                      (c != OUT && ISWORD(c)) ) {
++              if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc, m->g->loc))) &&
++                                      (c != OUT && ISWORD(c, m->g->loc)) ) {
+                       flagch = BOW;
+               }
+-              if ( (lastc != OUT && ISWORD(lastc)) &&
+-                              (flagch == EOL || (c != OUT && !ISWORD(c))) ) {
++              if ( (lastc != OUT && ISWORD(lastc, m->g->loc)) &&
++                              (flagch == EOL || (c != OUT && !ISWORD(c, m->g->loc))) ) {
+                       flagch = EOW;
+               }
+               if (flagch == BOW || flagch == EOW) {
+@@ -1031,7 +1031,7 @@
+                       break;
+               case OANYOF:
+                       cs = &g->sets[OPND(s)];
+-                      if (!NONCHAR(ch) && CHIN(cs, ch))
++                      if (!NONCHAR(ch) && CHIN(cs, ch, g->loc))
+                               FWD(aft, bef, 1);
+                       break;
+               case OBACK_:            /* ignored here */