diff options
author | Eric Promislow <ericp@ActiveState.com> | 2003-10-08 10:42:42 -0700 |
---|---|---|
committer | Abhijit Menon-Sen <ams@wiw.org> | 2003-10-09 07:55:34 +0000 |
commit | 459483364bd8ae7bd68c1206c3548757357dcc00 (patch) | |
tree | 2b2e9feb1890d522c4776bcdc5b758d70959087f /regcomp.c | |
parent | 3d27e215577f06a0418206573270be9a039edb17 (diff) | |
download | perl-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.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -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); |