---- engine.c.orig 2004-11-25 11:38:32.000000000 -0800
-+++ engine.c 2005-04-18 16:52:09.000000000 -0700
-@@ -270,7 +270,7 @@ int eflags;
+--- 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,
break;
assert(m->coldp < m->endp);
m->coldp += XMBRTOWC(NULL, m->coldp,
break;
assert(m->coldp < m->endp);
m->coldp += XMBRTOWC(NULL, m->coldp,
NOTE("false alarm");
/* recycle starting later */
start = m->coldp + XMBRTOWC(NULL, m->coldp,
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);
+- stop - m->coldp, &m->mbs, 0);
++ stop - m->coldp, &m->mbs, 0, g->loc);
assert(sep == rest); /* must exhaust substring */
assert(slow(m, ssp, sep, ssub, esub) == rest);
dp = dissect(m, ssp, sep, ssub, esub);
assert(sep == rest); /* must exhaust substring */
assert(slow(m, ssp, sep, ssub, esub) == rest);
dp = dissect(m, ssp, sep, ssub, esub);
i = OPND(m->g->strip[ss]);
assert(0 < i && i <= m->g->nsub);
m->pmatch[i].rm_so = sp - m->offp;
i = OPND(m->g->strip[ss]);
assert(0 < i && i <= m->g->nsub);
m->pmatch[i].rm_so = sp - m->offp;
-@@ -585,14 +597,14 @@ sopno lev; /* PLUS nesting level */
+@@ -586,14 +598,14 @@ backref(struct match *m,
-@@ -600,8 +612,8 @@ sopno lev; /* PLUS nesting level */
+@@ -601,8 +613,8 @@ backref(struct match *m,
-@@ -625,8 +637,8 @@ sopno lev; /* PLUS nesting level */
+@@ -626,8 +638,8 @@ backref(struct match *m,
-@@ -635,8 +647,8 @@ sopno lev; /* PLUS nesting level */
+@@ -636,8 +648,8 @@ backref(struct match *m,
if (( (sp == m->endp && !(m->eflags®_NOTEOL)) ||
(sp < m->endp && *sp == '\n' &&
(m->g->cflags®_NEWLINE)) ||
if (( (sp == m->endp && !(m->eflags®_NOTEOL)) ||
(sp < m->endp && *sp == '\n' &&
(m->g->cflags®_NEWLINE)) ||
- 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;
- 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;
-- 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));
+- return(p+XMBRTOWC(NULL, p, stop - p, &m->mbs, 0));
++ return(p+XMBRTOWC(NULL, p, stop - p, &m->mbs, 0, m->g->loc));
-@@ -1031,7 +1043,7 @@ states aft; /* states already known re
+@@ -1033,7 +1045,7 @@ step(struct re_guts *g,