亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pcre_exec.c

?? SDL文件。SDL_ERROwenjian.....
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
register unsigned int c;   /* Character values not kept over RMATCH() calls */register BOOL utf8;        /* Local copy of UTF-8 flag for speed */BOOL minimize, possessive; /* Quantifier options *//* When recursion is not being used, all "local" variables that have to bepreserved over calls to RMATCH() are part of a "frame" which is obtained fromheap storage. Set up the top-level frame here; others are obtained from theheap whenever RMATCH() does a "recursion". See the macro definitions above. */#ifdef NO_RECURSEheapframe *frame = (pcre_stack_malloc)(sizeof(heapframe));frame->Xprevframe = NULL;            /* Marks the top level *//* Copy in the original argument variables */frame->Xeptr = eptr;frame->Xecode = ecode;frame->Xmstart = mstart;frame->Xoffset_top = offset_top;frame->Xims = ims;frame->Xeptrb = eptrb;frame->Xflags = flags;frame->Xrdepth = rdepth;/* This is where control jumps back to to effect "recursion" */HEAP_RECURSE:/* Macros make the argument variables come from the current frame */#define eptr               frame->Xeptr#define ecode              frame->Xecode#define mstart             frame->Xmstart#define offset_top         frame->Xoffset_top#define ims                frame->Xims#define eptrb              frame->Xeptrb#define flags              frame->Xflags#define rdepth             frame->Xrdepth/* Ditto for the local variables */#ifdef SUPPORT_UTF8#define charptr            frame->Xcharptr#endif#define callpat            frame->Xcallpat#define data               frame->Xdata#define next               frame->Xnext#define pp                 frame->Xpp#define prev               frame->Xprev#define saved_eptr         frame->Xsaved_eptr#define new_recursive      frame->Xnew_recursive#define cur_is_word        frame->Xcur_is_word#define condition          frame->Xcondition#define prev_is_word       frame->Xprev_is_word#define original_ims       frame->Xoriginal_ims#ifdef SUPPORT_UCP#define prop_type          frame->Xprop_type#define prop_value         frame->Xprop_value#define prop_fail_result   frame->Xprop_fail_result#define prop_category      frame->Xprop_category#define prop_chartype      frame->Xprop_chartype#define prop_script        frame->Xprop_script#define oclength           frame->Xoclength#define occhars            frame->Xocchars#endif#define ctype              frame->Xctype#define fc                 frame->Xfc#define fi                 frame->Xfi#define length             frame->Xlength#define max                frame->Xmax#define min                frame->Xmin#define number             frame->Xnumber#define offset             frame->Xoffset#define op                 frame->Xop#define save_capture_last  frame->Xsave_capture_last#define save_offset1       frame->Xsave_offset1#define save_offset2       frame->Xsave_offset2#define save_offset3       frame->Xsave_offset3#define stacksave          frame->Xstacksave#define newptrb            frame->Xnewptrb/* When recursion is being used, local variables are allocated on the stack andget preserved during recursion in the normal way. In this environment, fi andi, and fc and c, can be the same variables. */#else         /* NO_RECURSE not defined */#define fi i#define fc c#ifdef SUPPORT_UTF8                /* Many of these variables are used only  */const uschar *charptr;             /* in small blocks of the code. My normal */#endif                             /* style of coding would have declared    */const uschar *callpat;             /* them within each of those blocks.      */const uschar *data;                /* However, in order to accommodate the   */const uschar *next;                /* version of this code that uses an      */USPTR         pp;                  /* external "stack" implemented on the    */const uschar *prev;                /* heap, it is easier to declare them all */USPTR         saved_eptr;          /* here, so the declarations can be cut   */                                   /* out in a block. The only declarations  */recursion_info new_recursive;      /* within blocks below are for variables  */                                   /* that do not have to be preserved over  */BOOL cur_is_word;                  /* a recursive call to RMATCH().          */BOOL condition;BOOL prev_is_word;unsigned long int original_ims;#ifdef SUPPORT_UCPint prop_type;int prop_value;int prop_fail_result;int prop_category;int prop_chartype;int prop_script;int oclength;uschar occhars[8];#endifint ctype;int length;int max;int min;int number;int offset;int op;int save_capture_last;int save_offset1, save_offset2, save_offset3;int stacksave[REC_STACK_SAVE_MAX];eptrblock newptrb;#endif     /* NO_RECURSE *//* These statements are here to stop the compiler complaining about unitializedvariables. */#ifdef SUPPORT_UCPprop_value = 0;prop_fail_result = 0;#endif/* This label is used for tail recursion, which is used in a few cases evenwhen NO_RECURSE is not defined, in order to reduce the amount of stack that isused. Thanks to Ian Taylor for noticing this possibility and sending theoriginal patch. */TAIL_RECURSE:/* OK, now we can get on with the real code of the function. Recursive callsare specified by the macro RMATCH and RRETURN is used to return. WhenNO_RECURSE is *not* defined, these just turn into a recursive call to match()and a "return", respectively (possibly with some debugging if DEBUG isdefined). However, RMATCH isn't like a function call because it's quite acomplicated macro. It has to be used in one particular way. This shouldn't,however, impact performance when true recursion is being used. */#ifdef SUPPORT_UTF8utf8 = md->utf8;       /* Local copy of the flag */#elseutf8 = FALSE;#endif/* First check that we haven't called match() too many times, or that wehaven't exceeded the recursive call limit. */if (md->match_call_count++ >= md->match_limit) RRETURN(PCRE_ERROR_MATCHLIMIT);if (rdepth >= md->match_limit_recursion) RRETURN(PCRE_ERROR_RECURSIONLIMIT);original_ims = ims;    /* Save for resetting on ')' *//* At the start of a group with an unlimited repeat that may match an emptystring, the match_cbegroup flag is set. When this is the case, add the currentsubject pointer to the chain of such remembered pointers, to be checked when wehit the closing ket, in order to break infinite loops that match no characters.When match() is called in other circumstances, don't add to the chain. Thematch_cbegroup flag must NOT be used with tail recursion, because the memoryblock that is used is on the stack, so a new one may be required for eachmatch(). */if ((flags & match_cbegroup) != 0)  {  newptrb.epb_saved_eptr = eptr;  newptrb.epb_prev = eptrb;  eptrb = &newptrb;  }/* Now start processing the opcodes. */for (;;)  {  minimize = possessive = FALSE;  op = *ecode;  /* For partial matching, remember if we ever hit the end of the subject after  matching at least one subject character. */  if (md->partial &&      eptr >= md->end_subject &&      eptr > mstart)    md->hitend = TRUE;  switch(op)    {    case OP_FAIL:    RRETURN(MATCH_NOMATCH);    case OP_PRUNE:    RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,      ims, eptrb, flags, RM51);    if (rrc != MATCH_NOMATCH) RRETURN(rrc);    RRETURN(MATCH_PRUNE);    case OP_COMMIT:    RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,      ims, eptrb, flags, RM52);    if (rrc != MATCH_NOMATCH) RRETURN(rrc);    RRETURN(MATCH_COMMIT);    case OP_SKIP:    RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,      ims, eptrb, flags, RM53);    if (rrc != MATCH_NOMATCH) RRETURN(rrc);    md->start_match_ptr = eptr;   /* Pass back current position */    RRETURN(MATCH_SKIP);    case OP_THEN:    RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,      ims, eptrb, flags, RM54);    if (rrc != MATCH_NOMATCH) RRETURN(rrc);    RRETURN(MATCH_THEN);    /* Handle a capturing bracket. If there is space in the offset vector, save    the current subject position in the working slot at the top of the vector.    We mustn't change the current values of the data slot, because they may be    set from a previous iteration of this group, and be referred to by a    reference inside the group.    If the bracket fails to match, we need to restore this value and also the    values of the final offsets, in case they were set by a previous iteration    of the same bracket.    If there isn't enough space in the offset vector, treat this as if it were    a non-capturing bracket. Don't worry about setting the flag for the error    case here; that is handled in the code for KET. */    case OP_CBRA:    case OP_SCBRA:    number = GET2(ecode, 1+LINK_SIZE);    offset = number << 1;#ifdef DEBUG    printf("start bracket %d\n", number);    printf("subject=");    pchars(eptr, 16, TRUE, md);    printf("\n");#endif    if (offset < md->offset_max)      {      save_offset1 = md->offset_vector[offset];      save_offset2 = md->offset_vector[offset+1];      save_offset3 = md->offset_vector[md->offset_end - number];      save_capture_last = md->capture_last;      DPRINTF(("saving %d %d %d\n", save_offset1, save_offset2, save_offset3));      md->offset_vector[md->offset_end - number] = eptr - md->start_subject;      flags = (op == OP_SCBRA)? match_cbegroup : 0;      do        {        RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md,          ims, eptrb, flags, RM1);        if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);        md->capture_last = save_capture_last;        ecode += GET(ecode, 1);        }      while (*ecode == OP_ALT);      DPRINTF(("bracket %d failed\n", number));      md->offset_vector[offset] = save_offset1;      md->offset_vector[offset+1] = save_offset2;      md->offset_vector[md->offset_end - number] = save_offset3;      RRETURN(MATCH_NOMATCH);      }    /* FALL THROUGH ... Insufficient room for saving captured contents. Treat    as a non-capturing bracket. */    /* VVVVVVVVVVVVVVVVVVVVVVVVV */    /* VVVVVVVVVVVVVVVVVVVVVVVVV */    DPRINTF(("insufficient capture room: treat as non-capturing\n"));    /* VVVVVVVVVVVVVVVVVVVVVVVVV */    /* VVVVVVVVVVVVVVVVVVVVVVVVV */    /* Non-capturing bracket. Loop for all the alternatives. When we get to the    final alternative within the brackets, we would return the result of a    recursive call to match() whatever happened. We can reduce stack usage by    turning this into a tail recursion, except in the case when match_cbegroup    is set.*/    case OP_BRA:    case OP_SBRA:    DPRINTF(("start non-capturing bracket\n"));    flags = (op >= OP_SBRA)? match_cbegroup : 0;    for (;;)      {      if (ecode[GET(ecode, 1)] != OP_ALT)   /* Final alternative */        {        if (flags == 0)    /* Not a possibly empty group */          {          ecode += _pcre_OP_lengths[*ecode];          DPRINTF(("bracket 0 tail recursion\n"));          goto TAIL_RECURSE;          }        /* Possibly empty group; can't use tail recursion. */        RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, ims,          eptrb, flags, RM48);        RRETURN(rrc);        }      /* For non-final alternatives, continue the loop for a NOMATCH result;      otherwise return. */      RMATCH(eptr, ecode + _pcre_OP_lengths[*ecode], offset_top, md, ims,        eptrb, flags, RM2);      if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN) RRETURN(rrc);      ecode += GET(ecode, 1);      }    /* Control never reaches here. */    /* Conditional group: compilation checked that there are no more than    two branches. If the condition is false, skipping the first branch takes us    past the end if there is only one branch, but that's OK because that is    exactly what going to the ket would do. As there is only one branch to be    obeyed, we can use tail recursion to avoid using another stack frame. */    case OP_COND:    case OP_SCOND:    if (ecode[LINK_SIZE+1] == OP_RREF)         /* Recursion test */      {      offset = GET2(ecode, LINK_SIZE + 2);     /* Recursion group number*/      condition = md->recursive != NULL &&        (offset == RREF_ANY || offset == md->recursive->group_num);      ecode += condition? 3 : GET(ecode, 1);      }    else if (ecode[LINK_SIZE+1] == OP_CREF)    /* Group used test */      {      offset = GET2(ecode, LINK_SIZE+2) << 1;  /* Doubled ref number */      condition = offset < offset_top && md->offset_vector[offset] >= 0;      ecode += condition? 3 : GET(ecode, 1);      }    else if (ecode[LINK_SIZE+1] == OP_DEF)     /* DEFINE - always false */      {      condition = FALSE;      ecode += GET(ecode, 1);      }    /* The condition is an assertion. Call match() to evaluate it - setting    the final argument match_condassert causes it to stop at the end of an    assertion. */    else      {      RMATCH(eptr, ecode + 1 + LINK_SIZE, offset_top, md, ims, NULL,          match_condassert, RM3);      if (rrc == MATCH_MATCH)        {        condition = TRUE;        ecode += 1 + LINK_SIZE + GET(ecode, LINK_SIZE + 2);        while (*ecode == OP_ALT) ecode += GET(ecode, 1);        }      else if (rrc != MATCH_NOMATCH && rrc != MATCH_THEN)        {        RRETURN(rrc);         /* Need braces because of following else */        }      else        {        condition = FALSE;        ecode += GET(ecode, 1);        }      }    /* We are now at the branch that is to be obeyed. As there is only one,    we can use tail recursion to avoid using another stack frame, except when    match_cbegroup is required for an unlimited repeat of a possibly empty    group. If the second alternative doesn't exist, we can just plough on. */    if (condition || *ecode == OP_ALT)      {      ecode += 1 + LINK_SIZE;      if (op == OP_SCOND)        /* Possibly empty group */        {        RMATCH(eptr, ecode, offset_top, md, ims, eptrb, match_cbegroup, RM49);        RRETURN(rrc);        }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合欧美在线| 中文无字幕一区二区三区| 日韩一级二级三级精品视频| 精品久久一区二区| 精品无码三级在线观看视频| 盗摄精品av一区二区三区| 日本福利一区二区| 2023国产精品| 亚洲成国产人片在线观看| 精品无人区卡一卡二卡三乱码免费卡 | 亚洲欧美日韩成人高清在线一区| 亚洲国产精品久久不卡毛片 | www.亚洲色图| 制服丝袜日韩国产| 中文字幕制服丝袜成人av| 美国精品在线观看| 色噜噜久久综合| 久久这里都是精品| 日本欧美一区二区三区乱码| 成人福利电影精品一区二区在线观看| 欧美区视频在线观看| 亚洲摸摸操操av| 国产精品99久久久久久久女警| 欧美日韩一二区| 亚洲欧洲精品一区二区精品久久久 | 成人黄色综合网站| 日韩欧美成人一区| 无码av免费一区二区三区试看| 成人av在线资源网站| 国产欧美1区2区3区| 久久9热精品视频| 日韩一区二区免费视频| 亚洲va国产va欧美va观看| 色噜噜狠狠成人网p站| 中文字幕亚洲视频| av在线不卡网| 亚洲丝袜美腿综合| 成人av第一页| 亚洲视频一区二区免费在线观看 | 欧美色网站导航| 亚洲蜜桃精久久久久久久| 色综合天天综合色综合av| 1000部国产精品成人观看| av电影在线观看完整版一区二区| 国产精品久久久久久久久图文区 | 一区二区三国产精华液| 欧美中文字幕一二三区视频| 亚洲一区二区三区国产| 欧美喷潮久久久xxxxx| 免费人成黄页网站在线一区二区| 制服丝袜亚洲色图| 国产一区日韩二区欧美三区| 免费欧美日韩国产三级电影| 欧美成人a在线| 99在线精品一区二区三区| 亚洲一区在线电影| 欧美大度的电影原声| 盗摄精品av一区二区三区| 夜夜嗨av一区二区三区中文字幕| 欧洲精品在线观看| 国产一区二区导航在线播放| 亚洲欧洲另类国产综合| 精品久久久久香蕉网| 99国产欧美久久久精品| 日韩高清欧美激情| 亚洲日本青草视频在线怡红院| 欧美一卡2卡3卡4卡| 91视视频在线观看入口直接观看www| 亚洲成人黄色小说| 日本一区二区免费在线| 日韩一区二区三区四区五区六区| 99国产精品一区| 国产精品一区二区不卡| 日韩中文字幕区一区有砖一区 | 欧美成人欧美edvon| 中文字幕中文在线不卡住| 日韩西西人体444www| 欧美日本一区二区| 一本一本大道香蕉久在线精品 | 六月丁香综合在线视频| 99久久99久久精品国产片果冻| 久久精品久久久精品美女| 亚洲电影一级黄| 中文字幕视频一区| 日本一区二区三区免费乱视频| 日韩三级av在线播放| 欧美日韩aaa| 欧美一区二区视频在线观看| 91国产成人在线| 91论坛在线播放| 9色porny自拍视频一区二区| 成人av综合在线| 成人国产精品免费| 顶级嫩模精品视频在线看| 粉嫩蜜臀av国产精品网站| 成人黄色免费短视频| 99国产精品一区| 在线观看一区日韩| 6080亚洲精品一区二区| 日韩一级完整毛片| 精品久久一区二区三区| 欧美激情一区二区| 亚洲美女在线国产| 欧美aaaaaa午夜精品| 久久精品国产一区二区| 国产精品中文字幕日韩精品| 成人激情午夜影院| 日本道在线观看一区二区| 91精品国产福利在线观看| 精品欧美乱码久久久久久1区2区| 久久精品一区二区三区av| 综合电影一区二区三区| 日韩电影免费在线| 国产精品一区二区黑丝| 在线观看亚洲a| 久久久久久久久久久黄色| 一区二区三区日韩欧美| 秋霞电影一区二区| 99久久精品免费看国产| 欧美成人精品二区三区99精品| 久久午夜国产精品| 日本欧美久久久久免费播放网| 国产精品99久久久久久久女警 | 成人黄色网址在线观看| 欧美日本免费一区二区三区| 亚洲欧洲一区二区在线播放| 日本亚洲免费观看| av在线不卡电影| 精品国产免费视频| 午夜视频在线观看一区二区| 成人免费毛片片v| 精品国产乱码久久久久久图片 | 91蜜桃在线免费视频| 久久久一区二区| 美女视频第一区二区三区免费观看网站| 成人小视频免费观看| 久久―日本道色综合久久| 日韩精品福利网| 在线成人高清不卡| 一区二区三区免费| 色婷婷av一区二区三区gif| 久久久精品一品道一区| 久久国产精品99精品国产| 欧美一卡二卡三卡四卡| 日本欧美肥老太交大片| 欧美久久久影院| 午夜久久福利影院| 欧美日韩成人高清| 日本在线不卡视频一二三区| 欧美片网站yy| 久久精品国产亚洲5555| 精品精品国产高清一毛片一天堂| 美女一区二区三区| 久久久亚洲欧洲日产国码αv| 国产激情一区二区三区| 国产精品成人免费在线| 一本大道av伊人久久综合| 亚洲第一狼人社区| 欧美一区二区在线播放| 国产综合久久久久影院| 国产精品免费久久| 欧美日韩国产小视频| 蜜臀精品久久久久久蜜臀 | 一个色在线综合| 日韩女优制服丝袜电影| 成人丝袜高跟foot| 亚洲一区欧美一区| 久久综合中文字幕| 91捆绑美女网站| 精品一区二区在线播放| 国产精品久久久久精k8| 91精品国模一区二区三区| 国产成人一区二区精品非洲| 亚洲精品中文字幕乱码三区| 日韩欧美中文一区二区| 波多野结衣在线一区| 亚洲一区二区在线视频| 国产日产欧美一区二区三区| 欧美视频在线播放| 成人在线视频首页| 免费在线观看成人| 亚洲视频在线一区观看| 久久久亚洲国产美女国产盗摄 | 亚洲国产中文字幕| 日本一区免费视频| 日韩欧美美女一区二区三区| 欧亚洲嫩模精品一区三区| 白白色 亚洲乱淫| 国产在线看一区| 日韩va亚洲va欧美va久久| 亚洲综合久久久| 国产精品久久久久久福利一牛影视| 日韩欧美一区在线| 欧美丰满一区二区免费视频| 色噜噜狠狠一区二区三区果冻| 成人午夜激情影院| 国产成人在线色| 成人成人成人在线视频| 国产成人在线电影| 成人在线视频一区二区|