Andy Dougherty:
# On Tue, 15 Jan 2002, Melvin Smith wrote:
#
# > Maybe set the check to :
# >
# >       if(rx->startindex-- == 0)
#
# That still sets startindex to the equivalent of (unsigned)
# -1, which might
# be something like 4294967295. I'm wondering whether that was
# the actual
# intent.  I suspect probably not.  Perhaps Brent really wanted
# a -1 there
# and forgot that startindex was unsigned.  Perhaps this is
# supposed to be a
# "Can't happen" branch and it would benefit from a stronger
# diagnostic.  I
# don't understand the surrounding context well enough to say.

Short answer: This might as well be signed, and I committed a patch
earlier today that makes it signed.

Long answer:

The structure of that opcode is something like this:

op rx_advance {
        if(we're starting at the left side of the string) {
                if(++startindex is past the end of the string) {
                        BACKTRACK
                }
        }
        else { /* we're starting at the right side of the string */
                if(--startindex is past the beginning of the string) {
                        BACKTRACK
                }
        }

        synchronize startindex and index
        clear the stack

        CONTINUE
}

The --startindex < 0 is a convenient way to test if it's past the
beginning.  startindex-- == 0 would probably work just as well.  Either
way, I've changed startindex to an INTVAL, since more of the contexts
it's used in expect INTVALs than not.

--Brent Dax
[EMAIL PROTECTED]
Parrot Configure pumpking and regex hacker

<obra> mmmm. hawt sysadmin chx0rs
<lathos> This is sad. I know of *a* hawt sysamin chx0r.
<obra> I know more than a few.
<lathos> obra: There are two? Are you sure it's not the same one?

Reply via email to