Changeset 14 for trunk/src/engine.c


Ignore:
Timestamp:
Dec 29, 2007, 7:19:45 AM (11 years ago)
Author:
cameron
Message:

Optimized ]]> testing; end-tag scan

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/engine.c

    r12 r14  
    2626
    2727#define OFFSET32_SENTINEL
    28 #if (BYTE_ORDER == LITTLE_ENDIAN)
    29 #define bitblock_sfli sisd_slli
    30 #endif
    3128
    3229  /* Install sentinels for every lexical item stream*/
     
    314311inline void ParsingEngine::Parse_EndTag () {
    315312        int markup_start = AbsPos();
    316 #ifndef OMIT_ADVANCE_PRIOR_TO_EXLUSIVE_SCAN
     313#ifndef OMIT_ADVANCE_PRIOR_TO_EXCLUSIVE_SCAN
    317314        Advance(2); /* Skip "</". */
    318315#endif
    319         ScanTo(RAngle);
    320         Advance(1);
    321         EndTag_action(markup_start, AbsPos());
     316        ScanTo(NameFollow);
     317        if (AtChar('>')) {
     318                Advance(1);
     319                EndTag_action(markup_start, AbsPos());
     320        }
     321        else {
     322                ScanTo(NonWS);
     323                if (AtChar('>')) {
     324                        Advance(1);
     325                        EndTag_action(markup_start, AbsPos());
     326                }
     327                else Error_action(markup_start, AbsPos());
     328        }
    322329}
    323330
     
    330337        }
    331338        else {
    332                 ScanTo(RBracket);
     339                ScanTo(CD_End_check);
    333340                while (!at_CDATA_End()) {
    334341                        Advance(1);
    335                         ScanTo(RBracket);
     342                        ScanTo(CD_End_check);
    336343                }
    337344                Advance(3); /* Skip "]]>". */
Note: See TracChangeset for help on using the changeset viewer.