Loading...
--- Libc/Libc-763.13/regex/FreeBSD/engine.c.patch
+++ Libc/Libc-391.2.5/regex/FreeBSD/engine.c.patch
@@ -1,6 +1,6 @@
---- engine.c.bsdnew 2009-11-11 11:29:04.000000000 -0800
-+++ engine.c 2009-11-11 11:30:28.000000000 -0800
-@@ -272,7 +272,7 @@ matcher(struct re_guts *g,
+--- 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,
@@ -9,16 +9,16 @@
}
if (nmatch == 1 && !g->backrefs)
break; /* no further info needed */
-@@ -333,7 +333,7 @@ matcher(struct re_guts *g,
+@@ -331,7 +331,7 @@
NOTE("false alarm");
/* recycle starting later */
start = m->coldp + XMBRTOWC(NULL, m->coldp,
-- stop - m->coldp, &m->mbs, 0);
-+ stop - m->coldp, &m->mbs, 0, g->loc);
+- m->endp - m->coldp, &m->mbs, 0);
++ m->endp - m->coldp, &m->mbs, 0, g->loc);
assert(start <= stop);
}
-@@ -410,7 +410,7 @@ dissect(struct match *m,
+@@ -409,7 +409,7 @@
assert(nope);
break;
case OCHAR:
@@ -27,7 +27,7 @@
break;
case OBOL:
case OEOL:
-@@ -419,7 +419,7 @@ dissect(struct match *m,
+@@ -418,7 +418,7 @@
break;
case OANY:
case OANYOF:
@@ -36,33 +36,7 @@
break;
case OBACK_:
case O_BACK:
-@@ -480,6 +480,10 @@ dissect(struct match *m,
- sep = ssp;
- ssp = oldssp;
- }
-+ else if (tail==rest) {
-+ /* Fix for test expr 105 */
-+ ssp = oldssp;
-+ }
- assert(sep == rest); /* must exhaust substring */
- assert(slow(m, ssp, sep, ssub, esub) == rest);
- dp = dissect(m, ssp, sep, ssub, esub);
-@@ -532,6 +536,14 @@ dissect(struct match *m,
- i = OPND(m->g->strip[ss]);
- assert(0 < i && i <= m->g->nsub);
- m->pmatch[i].rm_so = sp - m->offp;
-+ /* fix for T.regcomp 43: don't remember previous
-+ subexpression matches beyond the current one (i) */
-+ i++;
-+ while (i<= m->g->nsub) {
-+ m->pmatch[i].rm_so = -1;
-+ m->pmatch[i].rm_eo = -1;
-+ i++;
-+ }
- break;
- case ORPAREN:
- i = OPND(m->g->strip[ss]);
-@@ -586,14 +598,14 @@ backref(struct match *m,
+@@ -585,14 +585,14 @@
case OCHAR:
if (sp == stop)
return(NULL);
@@ -79,7 +53,7 @@
if (wc == BADCHAR)
return (NULL);
break;
-@@ -601,8 +613,8 @@ backref(struct match *m,
+@@ -600,8 +600,8 @@
if (sp == stop)
return (NULL);
cs = &m->g->sets[OPND(s)];
@@ -90,7 +64,7 @@
return(NULL);
break;
case OBOL:
-@@ -626,8 +638,8 @@ backref(struct match *m,
+@@ -625,8 +625,8 @@
(sp < m->endp && *(sp-1) == '\n' &&
(m->g->cflags®_NEWLINE)) ||
(sp > m->beginp &&
@@ -101,7 +75,7 @@
{ /* yes */ }
else
return(NULL);
-@@ -636,8 +648,8 @@ backref(struct match *m,
+@@ -635,8 +635,8 @@
if (( (sp == m->endp && !(m->eflags®_NOTEOL)) ||
(sp < m->endp && *sp == '\n' &&
(m->g->cflags®_NEWLINE)) ||
@@ -112,16 +86,16 @@
{ /* yes */ }
else
return(NULL);
-@@ -811,7 +823,7 @@ fast( struct match *m,
- clen = 0;
+@@ -807,7 +807,7 @@
+ if (p == m->endp)
c = OUT;
- } else
+ 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;
-@@ -835,12 +847,12 @@ fast( struct match *m,
+@@ -831,12 +831,12 @@
}
/* how about a word boundary? */
@@ -138,16 +112,16 @@
flagch = EOW;
}
if (flagch == BOW || flagch == EOW) {
-@@ -865,7 +877,7 @@ fast( struct match *m,
+@@ -861,7 +861,7 @@
assert(coldp != NULL);
m->coldp = coldp;
if (ISSET(st, stopst))
-- return(p+XMBRTOWC(NULL, p, stop - p, &m->mbs, 0));
-+ return(p+XMBRTOWC(NULL, p, stop - p, &m->mbs, 0, m->g->loc));
+- 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);
}
-@@ -916,7 +928,7 @@ slow( struct match *m,
+@@ -913,7 +913,7 @@
c = OUT;
clen = 0;
} else
@@ -156,7 +130,7 @@
/* is there an EOL and/or BOL between lastc and c? */
flagch = '\0';
-@@ -938,12 +950,12 @@ slow( struct match *m,
+@@ -935,12 +935,12 @@
}
/* how about a word boundary? */
@@ -173,7 +147,7 @@
flagch = EOW;
}
if (flagch == BOW || flagch == EOW) {
-@@ -1033,7 +1045,7 @@ step(struct re_guts *g,
+@@ -1031,7 +1031,7 @@
break;
case OANYOF:
cs = &g->sets[OPND(s)];