summaryrefslogtreecommitdiff
path: root/regcomp.c
diff options
context:
space:
mode:
authorEric Promislow <ericp@ActiveState.com>2003-10-08 10:42:42 -0700
committerAbhijit Menon-Sen <ams@wiw.org>2003-10-09 07:55:34 +0000
commit459483364bd8ae7bd68c1206c3548757357dcc00 (patch)
tree2b2e9feb1890d522c4776bcdc5b758d70959087f /regcomp.c
parent3d27e215577f06a0418206573270be9a039edb17 (diff)
downloadperl-459483364bd8ae7bd68c1206c3548757357dcc00.tar.gz
Internal fixes to source-code coordinate
calculations in regcomp.c Message-Id: <20031008174242.A17544@ActiveState.com> p4raw-id: //depot/perl@21430
Diffstat (limited to 'regcomp.c')
-rw-r--r--regcomp.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/regcomp.c b/regcomp.c
index 9a6df98cc2..1b3805b1c0 100644
--- a/regcomp.c
+++ b/regcomp.c
@@ -2511,8 +2511,8 @@ S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp)
if (paren == '>')
node = SUSPEND, flag = 0;
reginsert(pRExC_state, node,ret);
- Set_Node_Offset(ret, oregcomp_parse);
- Set_Node_Length(ret, RExC_parse - oregcomp_parse + 2);
+ Set_Node_Cur_Length(ret);
+ Set_Node_Offset(ret, parse_start + 1);
ret->flags = flag;
regtail(pRExC_state, ret, reg_node(pRExC_state, TAIL));
}
@@ -2793,7 +2793,7 @@ S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp)
{
register regnode *ret = 0;
I32 flags;
- char *parse_start = 0;
+ char *parse_start = RExC_parse;
*flagp = WORST; /* Tentatively. */
@@ -3056,6 +3056,7 @@ tryagain:
default:
/* Do not generate `unrecognized' warnings here, we fall
back into the quick-grab loop below */
+ parse_start--;
goto defchar;
}
break;
@@ -4425,6 +4426,7 @@ S_reginsert(pTHX_ RExC_state_t *pRExC_state, U8 op, regnode *opnd)
RExC_parse - RExC_start,
RExC_offsets[0]));
Set_Node_Offset(place, RExC_parse);
+ Set_Node_Length(place, 1);
}
src = NEXTOPER(place);
FILL_ADVANCE_NODE(place, op);