System.Text.RegularExpressions.RegexInterpreter.Backtrack C# (CSharp) Method

Backtrack() private method

private Backtrack ( ) : void
return void
        private void Backtrack()
        {
            int newpos = runtrack[runtrackpos++];
            #if DEBUG
            if (runmatch.Debug)
            {
                if (newpos < 0)
                    Debug.WriteLine("       Backtracking (back2) to code position " + (-newpos));
                else
                    Debug.WriteLine("       Backtracking to code position " + newpos);
            }
            #endif

            if (newpos < 0)
            {
                newpos = -newpos;
                SetOperator(_code._codes[newpos] | RegexCode.Back2);
            }
            else
            {
                SetOperator(_code._codes[newpos] | RegexCode.Back);
            }

            // When branching backward, ensure storage
            if (newpos < _codepos)
                EnsureStorage();

            _codepos = newpos;
        }