[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 82c089f 3/6: regex-emacs: omit regstart tests and regend set
From: |
Paul Eggert |
Subject: |
master 82c089f 3/6: regex-emacs: omit regstart tests and regend set |
Date: |
Wed, 26 Aug 2020 03:20:39 -0400 (EDT) |
branch: master
commit 82c089f532ede12c5811daacae5f824703ff8a7e
Author: Paul Eggert <eggert@cs.ucla.edu>
Commit: Paul Eggert <eggert@cs.ucla.edu>
regex-emacs: omit regstart tests and regend set
* src/regex-emacs.c (PUSH_FAILURE_REG, POP_FAILURE_REG_OR_COUNT)
(re_match_2_internal): Add some assertions that regstart
is set whenever regend is.
(re_match_2_internal): Omit two unnecessary REG_UNSET (regstart ...)s
and one unnecessary assignment to regend.
---
src/regex-emacs.c | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/src/regex-emacs.c b/src/regex-emacs.c
index da73f58..b9c157d 100644
--- a/src/regex-emacs.c
+++ b/src/regex-emacs.c
@@ -982,6 +982,7 @@ do {
\
ENSURE_FAIL_STACK(3);
\
DEBUG_PRINT (" Push reg %"PRIdPTR" (spanning %p -> %p)\n",
\
n, regstart[n], regend[n]); \
+ eassert (REG_UNSET (regstart[n]) <= REG_UNSET (regend[n])); \
PUSH_FAILURE_POINTER (regstart[n]); \
PUSH_FAILURE_POINTER (regend[n]); \
PUSH_FAILURE_INT (n);
\
@@ -1019,6 +1020,7 @@ do {
\
{ \
regend[pfreg] = POP_FAILURE_POINTER (); \
regstart[pfreg] = POP_FAILURE_POINTER ();
\
+ eassert (REG_UNSET (regstart[pfreg]) <= REG_UNSET (regend[pfreg])); \
DEBUG_PRINT (" Pop reg %ld (spanning %p -> %p)\n", \
pfreg, regstart[pfreg], regend[pfreg]); \
} \
@@ -4122,6 +4124,8 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
{
regstart[reg] = best_regstart[reg];
regend[reg] = best_regend[reg];
+ eassert (REG_UNSET (regstart[reg])
+ <= REG_UNSET (regend[reg]));
}
}
} /* d != end_match_2 */
@@ -4169,7 +4173,9 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
for (ptrdiff_t reg = 1; reg < num_regs; reg++)
{
- if (REG_UNSET (regstart[reg]) || REG_UNSET (regend[reg]))
+ eassert (REG_UNSET (regstart[reg])
+ <= REG_UNSET (regend[reg]));
+ if (REG_UNSET (regend[reg]))
regs->start[reg] = regs->end[reg] = -1;
else
{
@@ -4374,7 +4380,6 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
PUSH_FAILURE_REG (*p);
regstart[*p] = d;
- regend[*p] = NULL; /* probably unnecessary. -sm */
DEBUG_PRINT (" regstart: %td\n", POINTER_TO_OFFSET (regstart[*p]));
/* Move past the register number and inner group count. */
@@ -4419,7 +4424,8 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
DEBUG_PRINT ("EXECUTING duplicate %d.\n", regno);
/* Can't back reference a group which we've never matched. */
- if (REG_UNSET (regstart[regno]) || REG_UNSET (regend[regno]))
+ eassert (REG_UNSET (regstart[regno]) <= REG_UNSET (regend[regno]));
+ if (REG_UNSET (regend[regno]))
goto fail;
/* Where in input to try to start matching. */
- master updated (b64d04c -> e823709), Paul Eggert, 2020/08/26
- master 438975b 1/6: regex-emacs omit POS runtime check, Paul Eggert, 2020/08/26
- master 768bea3 2/6: regex-emacs omit allocation of 3 slots, Paul Eggert, 2020/08/26
- master 82c089f 3/6: regex-emacs: omit regstart tests and regend set,
Paul Eggert <=
- master 4c0a975 4/6: regex-emacs: subscript-check register numbers, Paul Eggert, 2020/08/26
- master bd5771f 5/6: regex-emacs: fix leak on memory allocation failure, Paul Eggert, 2020/08/26
- master e823709 6/6: regex-emacs: copy less when reallocating, Paul Eggert, 2020/08/26