mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* regexec.c (OPCODE_EXEC_HOOK): op is p-1 because p is already
incremented. * regexec.c (OPCODE_EXEC_HOOK): use the exact end address. * regexec.c (match_at): don't call OPCODE_EXEC_HOOK in CASE() when it comes from goto fail. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56332 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
011e45c6ec
commit
e342418e46
2 changed files with 23 additions and 9 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
Tue Oct 4 05:53:11 2016 NARUSE, Yui <naruse@ruby-lang.org>
|
||||
|
||||
* regexec.c (OPCODE_EXEC_HOOK): op is p-1 because p is already
|
||||
incremented.
|
||||
|
||||
* regexec.c (OPCODE_EXEC_HOOK): use the exact end address.
|
||||
|
||||
* regexec.c (match_at): don't call OPCODE_EXEC_HOOK in CASE()
|
||||
when it comes from goto fail.
|
||||
|
||||
Mon Oct 3 21:24:41 2016 Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
|
||||
|
||||
* NEWS: mention Readline.quoting_detection_proc{,=}.
|
||||
|
|
22
regexec.c
22
regexec.c
|
@ -1613,12 +1613,13 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
|||
#ifdef ONIG_DEBUG_MATCH
|
||||
#define OPCODE_EXEC_HOOK \
|
||||
if (s) { \
|
||||
UChar *q, *bp, buf[50]; \
|
||||
UChar *op, *q, *bp, buf[50]; \
|
||||
int len; \
|
||||
fprintf(stderr, "%4"PRIdPTR"> \"", (*p == OP_FINISH) ? (ptrdiff_t )-1 : s - str); \
|
||||
op = p - 1; \
|
||||
fprintf(stderr, "%4"PRIdPTR"> \"", (*op == OP_FINISH) ? (ptrdiff_t )-1 : s - str); \
|
||||
bp = buf; \
|
||||
q = s; \
|
||||
if (*p != OP_FINISH) { /* s may not be a valid pointer if OP_FINISH. */ \
|
||||
if (*op != OP_FINISH) { /* s may not be a valid pointer if OP_FINISH. */ \
|
||||
for (i = 0; i < 7 && q < end; i++) { \
|
||||
len = enclen(encode, q, end); \
|
||||
while (len-- > 0) *bp++ = *q++; \
|
||||
|
@ -1629,8 +1630,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
|||
*bp = 0; \
|
||||
fputs((char* )buf, stderr); \
|
||||
for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr); \
|
||||
fprintf(stderr, "%4"PRIdPTR":", (p == FinishCode) ? (ptrdiff_t )-1 : p - reg->p); \
|
||||
onig_print_compiled_byte_code(stderr, p, p + strlen((char *)p),NULL, encode); \
|
||||
fprintf(stderr, "%4"PRIdPTR":", (op == FinishCode) ? (ptrdiff_t )-1 : op - reg->p); \
|
||||
onig_print_compiled_byte_code(stderr, op, reg->p+reg->used, NULL, encode); \
|
||||
fprintf(stderr, "\n"); \
|
||||
}
|
||||
#else
|
||||
|
@ -3064,10 +3065,13 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
|
|||
goto finish;
|
||||
NEXT;
|
||||
|
||||
fail:
|
||||
MOP_OUT;
|
||||
/* fall */
|
||||
CASE(OP_FAIL) MOP_IN(OP_FAIL);
|
||||
CASE(OP_FAIL)
|
||||
if (0) {
|
||||
/* fall */
|
||||
fail:
|
||||
MOP_OUT;
|
||||
}
|
||||
MOP_IN(OP_FAIL);
|
||||
STACK_POP;
|
||||
p = stk->u.state.pcode;
|
||||
s = stk->u.state.pstr;
|
||||
|
|
Loading…
Reference in a new issue