]> granicus.if.org Git - onig/commitdiff
fix indent
authorkosako <kosako@sofnec.co.jp>
Fri, 5 Aug 2016 06:02:28 +0000 (15:02 +0900)
committerkosako <kosako@sofnec.co.jp>
Fri, 5 Aug 2016 06:02:28 +0000 (15:02 +0900)
src/regexec.c

index f8ed991464ad91c35b6c0be14020234c06805a51..2abe20c187216b515c38465f12769fa8cbfc41f2 100644 (file)
@@ -1108,33 +1108,33 @@ static int backref_match_at_nested_level(regex_t* reg
     }
     else if (level == nest) {
       if (k->type == STK_MEM_START) {
-       if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) {
-         pstart = k->u.mem.pstr;
-         if (pend != NULL_UCHARP) {
-           if (pend - pstart > send - *s) return 0; /* or goto next_mem; */
-           p  = pstart;
-           ss = *s;
-
-           if (ignore_case != 0) {
-             if (string_cmp_ic(reg->enc, case_fold_flag,
-                               pstart, &ss, (int )(pend - pstart)) == 0)
-               return 0; /* or goto next_mem; */
-           }
-           else {
-             while (p < pend) {
-               if (*p++ != *ss++) return 0; /* or goto next_mem; */
-             }
-           }
-
-           *s = ss;
-           return 1;
-         }
-       }
+        if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) {
+          pstart = k->u.mem.pstr;
+          if (pend != NULL_UCHARP) {
+            if (pend - pstart > send - *s) return 0; /* or goto next_mem; */
+            p  = pstart;
+            ss = *s;
+
+            if (ignore_case != 0) {
+              if (string_cmp_ic(reg->enc, case_fold_flag,
+                                pstart, &ss, (int )(pend - pstart)) == 0)
+                return 0; /* or goto next_mem; */
+            }
+            else {
+              while (p < pend) {
+                if (*p++ != *ss++) return 0; /* or goto next_mem; */
+              }
+            }
+
+            *s = ss;
+            return 1;
+          }
+        }
       }
       else if (k->type == STK_MEM_END) {
-       if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) {
-         pend = k->u.mem.pstr;
-       }
+        if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) {
+          pend = k->u.mem.pstr;
+        }
       }
     }
     k--;
@@ -1316,64 +1316,64 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_END:  MOP_IN(OP_END);
       n = s - sstart;
       if (n > best_len) {
-       OnigRegion* region;
+        OnigRegion* region;
 #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
-       if (IS_FIND_LONGEST(option)) {
-         if (n > msa->best_len) {
-           msa->best_len = n;
-           msa->best_s   = (UChar* )sstart;
-         }
-         else
-           goto end_best_len;
+        if (IS_FIND_LONGEST(option)) {
+          if (n > msa->best_len) {
+            msa->best_len = n;
+            msa->best_s   = (UChar* )sstart;
+          }
+          else
+            goto end_best_len;
         }
 #endif
-       best_len = n;
-       region = msa->region;
-       if (region) {
+        best_len = n;
+        region = msa->region;
+        if (region) {
 #ifdef USE_POSIX_API_REGION_OPTION
-         if (IS_POSIX_REGION(msa->options)) {
-           posix_regmatch_t* rmt = (posix_regmatch_t* )region;
-
-           rmt[0].rm_so = sstart - str;
-           rmt[0].rm_eo = s      - str;
-           for (i = 1; i <= num_mem; i++) {
-             if (mem_end_stk[i] != INVALID_STACK_INDEX) {
-               if (BIT_STATUS_AT(reg->bt_mem_start, i))
-                 rmt[i].rm_so = STACK_AT(mem_start_stk[i])->u.mem.pstr - str;
-               else
-                 rmt[i].rm_so = (UChar* )((void* )(mem_start_stk[i])) - str;
-
-               rmt[i].rm_eo = (BIT_STATUS_AT(reg->bt_mem_end, i)
-                               ? STACK_AT(mem_end_stk[i])->u.mem.pstr
-                               : (UChar* )((void* )mem_end_stk[i])) - str;
-             }
-             else {
-               rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS;
-             }
-           }
-         }
-         else {
+          if (IS_POSIX_REGION(msa->options)) {
+            posix_regmatch_t* rmt = (posix_regmatch_t* )region;
+
+            rmt[0].rm_so = sstart - str;
+            rmt[0].rm_eo = s      - str;
+            for (i = 1; i <= num_mem; i++) {
+              if (mem_end_stk[i] != INVALID_STACK_INDEX) {
+                if (BIT_STATUS_AT(reg->bt_mem_start, i))
+                  rmt[i].rm_so = STACK_AT(mem_start_stk[i])->u.mem.pstr - str;
+                else
+                  rmt[i].rm_so = (UChar* )((void* )(mem_start_stk[i])) - str;
+
+                rmt[i].rm_eo = (BIT_STATUS_AT(reg->bt_mem_end, i)
+                                ? STACK_AT(mem_end_stk[i])->u.mem.pstr
+                                : (UChar* )((void* )mem_end_stk[i])) - str;
+              }
+              else {
+                rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS;
+              }
+            }
+          }
+          else {
 #endif /* USE_POSIX_API_REGION_OPTION */
-           region->beg[0] = sstart - str;
-           region->end[0] = s      - str;
-           for (i = 1; i <= num_mem; i++) {
-             if (mem_end_stk[i] != INVALID_STACK_INDEX) {
-               if (BIT_STATUS_AT(reg->bt_mem_start, i))
-                 region->beg[i] = STACK_AT(mem_start_stk[i])->u.mem.pstr - str;
-               else
-                 region->beg[i] = (UChar* )((void* )mem_start_stk[i]) - str;
-
-               region->end[i] = (BIT_STATUS_AT(reg->bt_mem_end, i)
-                                 ? STACK_AT(mem_end_stk[i])->u.mem.pstr
-                                 : (UChar* )((void* )mem_end_stk[i])) - str;
-             }
-             else {
-               region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS;
-             }
-           }
+            region->beg[0] = sstart - str;
+            region->end[0] = s      - str;
+            for (i = 1; i <= num_mem; i++) {
+              if (mem_end_stk[i] != INVALID_STACK_INDEX) {
+                if (BIT_STATUS_AT(reg->bt_mem_start, i))
+                  region->beg[i] = STACK_AT(mem_start_stk[i])->u.mem.pstr - str;
+                else
+                  region->beg[i] = (UChar* )((void* )mem_start_stk[i]) - str;
+
+                region->end[i] = (BIT_STATUS_AT(reg->bt_mem_end, i)
+                                  ? STACK_AT(mem_end_stk[i])->u.mem.pstr
+                                  : (UChar* )((void* )mem_end_stk[i])) - str;
+              }
+              else {
+                region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS;
+              }
+            }
 
 #ifdef USE_CAPTURE_HISTORY
-           if (reg->capture_history != 0) {
+            if (reg->capture_history != 0) {
               int r;
               OnigCaptureTreeNode* node;
 
@@ -1397,12 +1397,12 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
                 best_len = r; /* error code */
                 goto finish;
               }
-           }
+            }
 #endif /* USE_CAPTURE_HISTORY */
 #ifdef USE_POSIX_API_REGION_OPTION
-         } /* else IS_POSIX_REGION() */
+          } /* else IS_POSIX_REGION() */
 #endif
-       } /* if (region) */
+        } /* if (region) */
       } /* n > best_len */
 
 #ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE
@@ -1411,13 +1411,13 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       MOP_OUT;
 
       if (IS_FIND_CONDITION(option)) {
-       if (IS_FIND_NOT_EMPTY(option) && s == sstart) {
-         best_len = ONIG_MISMATCH;
-         goto fail; /* for retry */
-       }
-       if (IS_FIND_LONGEST(option) && DATA_ENSURE_CHECK1) {
-         goto fail; /* for retry */
-       }
+        if (IS_FIND_NOT_EMPTY(option) && s == sstart) {
+          best_len = ONIG_MISMATCH;
+          goto fail; /* for retry */
+        }
+        if (IS_FIND_LONGEST(option) && DATA_ENSURE_CHECK1) {
+          goto fail; /* for retry */
+        }
       }
 
       /* default behavior: return first-matching result. */
@@ -1438,22 +1438,22 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_EXACT1_IC:  MOP_IN(OP_EXACT1_IC);
       {
-       int len;
-       UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
-
-       DATA_ENSURE(1);
-       len = ONIGENC_MBC_CASE_FOLD(encode,
-                   /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */
-                   case_fold_flag,
-                   &s, end, lowbuf);
-       DATA_ENSURE(0);
-       q = lowbuf;
-       while (len-- > 0) {
-         if (*p != *q) {
+        int len;
+        UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
+
+        DATA_ENSURE(1);
+        len = ONIGENC_MBC_CASE_FOLD(encode,
+                 /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */
+                                    case_fold_flag,
+                                    &s, end, lowbuf);
+        DATA_ENSURE(0);
+        q = lowbuf;
+        while (len-- > 0) {
+          if (*p != *q) {
             goto fail;
           }
-         p++; q++;
-       }
+          p++; q++;
+        }
       }
       MOP_OUT;
       break;
@@ -1518,7 +1518,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       GET_LENGTH_INC(tlen, p);
       DATA_ENSURE(tlen);
       while (tlen-- > 0) {
-       if (*p++ != *s++) goto fail;
+        if (*p++ != *s++) goto fail;
       }
       sprev = s - 1;
       MOP_OUT;
@@ -1527,26 +1527,26 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_EXACTN_IC:  MOP_IN(OP_EXACTN_IC);
       {
-       int len;
-       UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
+        int len;
+        UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];
 
-       GET_LENGTH_INC(tlen, p);
-       endp = p + tlen;
+        GET_LENGTH_INC(tlen, p);
+        endp = p + tlen;
 
-       while (p < endp) {
-         sprev = s;
-         DATA_ENSURE(1);
-         len = ONIGENC_MBC_CASE_FOLD(encode,
-                     /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */
-                     case_fold_flag,
-                     &s, end, lowbuf);
-         DATA_ENSURE(0);
-         q = lowbuf;
-         while (len-- > 0) {
-           if (*p != *q) goto fail;
-           p++; q++;
-         }
-       }
+        while (p < endp) {
+          sprev = s;
+          DATA_ENSURE(1);
+          len = ONIGENC_MBC_CASE_FOLD(encode,
+                        /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */
+                                      case_fold_flag,
+                                      &s, end, lowbuf);
+          DATA_ENSURE(0);
+          q = lowbuf;
+          while (len-- > 0) {
+            if (*p != *q) goto fail;
+            p++; q++;
+          }
+        }
       }
 
       MOP_OUT;
@@ -1600,10 +1600,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       GET_LENGTH_INC(tlen, p);
       DATA_ENSURE(tlen * 2);
       while (tlen-- > 0) {
-       if (*p != *s) goto fail;
-       p++; s++;
-       if (*p != *s) goto fail;
-       p++; s++;
+        if (*p != *s) goto fail;
+        p++; s++;
+        if (*p != *s) goto fail;
+        p++; s++;
       }
       sprev = s - 2;
       MOP_OUT;
@@ -1614,12 +1614,12 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       GET_LENGTH_INC(tlen, p);
       DATA_ENSURE(tlen * 3);
       while (tlen-- > 0) {
-       if (*p != *s) goto fail;
-       p++; s++;
-       if (*p != *s) goto fail;
-       p++; s++;
-       if (*p != *s) goto fail;
-       p++; s++;
+        if (*p != *s) goto fail;
+        p++; s++;
+        if (*p != *s) goto fail;
+        p++; s++;
+        if (*p != *s) goto fail;
+        p++; s++;
       }
       sprev = s - 3;
       MOP_OUT;
@@ -1632,8 +1632,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       tlen2 *= tlen;
       DATA_ENSURE(tlen2);
       while (tlen2-- > 0) {
-       if (*p != *s) goto fail;
-       p++; s++;
+        if (*p != *s) goto fail;
+        p++; s++;
       }
       sprev = s - tlen;
       MOP_OUT;
@@ -1654,23 +1654,23 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     cclass_mb:
       GET_LENGTH_INC(tlen, p);
       {
-       OnigCodePoint code;
-       UChar *ss;
-       int mb_len;
+        OnigCodePoint code;
+        UChar *ss;
+        int mb_len;
 
-       DATA_ENSURE(1);
-       mb_len = enclen(encode, s);
-       DATA_ENSURE(mb_len);
-       ss = s;
-       s += mb_len;
-       code = ONIGENC_MBC_TO_CODE(encode, ss, s);
+        DATA_ENSURE(1);
+        mb_len = enclen(encode, s);
+        DATA_ENSURE(mb_len);
+        ss = s;
+        s += mb_len;
+        code = ONIGENC_MBC_TO_CODE(encode, ss, s);
 
 #ifdef PLATFORM_UNALIGNED_WORD_ACCESS
-       if (! onig_is_in_code_range(p, code)) goto fail;
+        if (! onig_is_in_code_range(p, code)) goto fail;
 #else
-       q = p;
-       ALIGNMENT_RIGHT(q);
-       if (! onig_is_in_code_range(q, code)) goto fail;
+        q = p;
+        ALIGNMENT_RIGHT(q);
+        if (! onig_is_in_code_range(q, code)) goto fail;
 #endif
       }
       p += tlen;
@@ -1680,17 +1680,17 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_CCLASS_MIX:  MOP_IN(OP_CCLASS_MIX);
       DATA_ENSURE(1);
       if (ONIGENC_IS_MBC_HEAD(encode, s)) {
-       p += SIZE_BITSET;
-       goto cclass_mb;
+        p += SIZE_BITSET;
+        goto cclass_mb;
       }
       else {
-       if (BITSET_AT(((BitSetRef )p), *s) == 0)
-         goto fail;
+        if (BITSET_AT(((BitSetRef )p), *s) == 0)
+          goto fail;
 
-       p += SIZE_BITSET;
-       GET_LENGTH_INC(tlen, p);
-       p += tlen;
-       s++;
+        p += SIZE_BITSET;
+        GET_LENGTH_INC(tlen, p);
+        p += tlen;
+        s++;
       }
       MOP_OUT;
       break;
@@ -1706,36 +1706,36 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_CCLASS_MB_NOT:  MOP_IN(OP_CCLASS_MB_NOT);
       DATA_ENSURE(1);
       if (! ONIGENC_IS_MBC_HEAD(encode, s)) {
-       s++;
-       GET_LENGTH_INC(tlen, p);
-       p += tlen;
-       goto cc_mb_not_success;
+        s++;
+        GET_LENGTH_INC(tlen, p);
+        p += tlen;
+        goto cc_mb_not_success;
       }
 
     cclass_mb_not:
       GET_LENGTH_INC(tlen, p);
       {
-       OnigCodePoint code;
-       UChar *ss;
-       int mb_len = enclen(encode, s);
+        OnigCodePoint code;
+        UChar *ss;
+        int mb_len = enclen(encode, s);
 
-       if (! DATA_ENSURE_CHECK(mb_len)) {
+        if (! DATA_ENSURE_CHECK(mb_len)) {
           DATA_ENSURE(1);
-         s = (UChar* )end;
-         p += tlen;
-         goto cc_mb_not_success;
-       }
+          s = (UChar* )end;
+          p += tlen;
+          goto cc_mb_not_success;
+        }
 
-       ss = s;
-       s += mb_len;
-       code = ONIGENC_MBC_TO_CODE(encode, ss, s);
+        ss = s;
+        s += mb_len;
+        code = ONIGENC_MBC_TO_CODE(encode, ss, s);
 
 #ifdef PLATFORM_UNALIGNED_WORD_ACCESS
-       if (onig_is_in_code_range(p, code)) goto fail;
+        if (onig_is_in_code_range(p, code)) goto fail;
 #else
-       q = p;
-       ALIGNMENT_RIGHT(q);
-       if (onig_is_in_code_range(q, code)) goto fail;
+        q = p;
+        ALIGNMENT_RIGHT(q);
+        if (onig_is_in_code_range(q, code)) goto fail;
 #endif
       }
       p += tlen;
@@ -1747,36 +1747,36 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_CCLASS_MIX_NOT:  MOP_IN(OP_CCLASS_MIX_NOT);
       DATA_ENSURE(1);
       if (ONIGENC_IS_MBC_HEAD(encode, s)) {
-       p += SIZE_BITSET;
-       goto cclass_mb_not;
+        p += SIZE_BITSET;
+        goto cclass_mb_not;
       }
       else {
-       if (BITSET_AT(((BitSetRef )p), *s) != 0)
-         goto fail;
+        if (BITSET_AT(((BitSetRef )p), *s) != 0)
+          goto fail;
 
-       p += SIZE_BITSET;
-       GET_LENGTH_INC(tlen, p);
-       p += tlen;
-       s++;
+        p += SIZE_BITSET;
+        GET_LENGTH_INC(tlen, p);
+        p += tlen;
+        s++;
       }
       MOP_OUT;
       break;
 
     case OP_CCLASS_NODE:  MOP_IN(OP_CCLASS_NODE);
       {
-       OnigCodePoint code;
+        OnigCodePoint code;
         void *node;
         int mb_len;
         UChar *ss;
 
         DATA_ENSURE(1);
         GET_POINTER_INC(node, p);
-       mb_len = enclen(encode, s);
-       ss = s;
-       s += mb_len;
-       DATA_ENSURE(0);
-       code = ONIGENC_MBC_TO_CODE(encode, ss, s);
-       if (onig_is_code_in_cc_len(mb_len, code, node) == 0) goto fail;
+        mb_len = enclen(encode, s);
+        ss = s;
+        s += mb_len;
+        DATA_ENSURE(0);
+        code = ONIGENC_MBC_TO_CODE(encode, ss, s);
+        if (onig_is_code_in_cc_len(mb_len, code, node) == 0) goto fail;
       }
       MOP_OUT;
       break;
@@ -1800,8 +1800,8 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_ANYCHAR_STAR:  MOP_IN(OP_ANYCHAR_STAR);
       while (DATA_ENSURE_CHECK1) {
-       STACK_PUSH_ALT(p, s, sprev);
-       n = enclen(encode, s);
+        STACK_PUSH_ALT(p, s, sprev);
+        n = enclen(encode, s);
         DATA_ENSURE(n);
         if (ONIGENC_IS_MBC_NEWLINE(encode, s, end))  goto fail;
         sprev = s;
@@ -1812,27 +1812,27 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_ANYCHAR_ML_STAR:  MOP_IN(OP_ANYCHAR_ML_STAR);
       while (DATA_ENSURE_CHECK1) {
-       STACK_PUSH_ALT(p, s, sprev);
-       n = enclen(encode, s);
-       if (n > 1) {
-         DATA_ENSURE(n);
-         sprev = s;
-         s += n;
-       }
-       else {
-         sprev = s;
-         s++;
-       }
+        STACK_PUSH_ALT(p, s, sprev);
+        n = enclen(encode, s);
+        if (n > 1) {
+          DATA_ENSURE(n);
+          sprev = s;
+          s += n;
+        }
+        else {
+          sprev = s;
+          s++;
+        }
       }
       MOP_OUT;
       break;
 
     case OP_ANYCHAR_STAR_PEEK_NEXT:  MOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT);
       while (DATA_ENSURE_CHECK1) {
-       if (*p == *s) {
-         STACK_PUSH_ALT(p + 1, s, sprev);
-       }
-       n = enclen(encode, s);
+        if (*p == *s) {
+          STACK_PUSH_ALT(p + 1, s, sprev);
+        }
+        n = enclen(encode, s);
         DATA_ENSURE(n);
         if (ONIGENC_IS_MBC_NEWLINE(encode, s, end))  goto fail;
         sprev = s;
@@ -1844,19 +1844,19 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_ANYCHAR_ML_STAR_PEEK_NEXT:MOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT);
       while (DATA_ENSURE_CHECK1) {
-       if (*p == *s) {
-         STACK_PUSH_ALT(p + 1, s, sprev);
-       }
-       n = enclen(encode, s);
-       if (n > 1) {
-         DATA_ENSURE(n);
-         sprev = s;
-         s += n;
-       }
-       else {
-         sprev = s;
-         s++;
-       }
+        if (*p == *s) {
+          STACK_PUSH_ALT(p + 1, s, sprev);
+        }
+        n = enclen(encode, s);
+        if (n > 1) {
+          DATA_ENSURE(n);
+          sprev = s;
+          s += n;
+        }
+        else {
+          sprev = s;
+          s++;
+        }
       }
       p++;
       MOP_OUT;
@@ -1866,11 +1866,11 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_STATE_CHECK_ANYCHAR_STAR:  MOP_IN(OP_STATE_CHECK_ANYCHAR_STAR);
       GET_STATE_CHECK_NUM_INC(mem, p);
       while (DATA_ENSURE_CHECK1) {
-       STATE_CHECK_VAL(scv, mem);
-       if (scv) goto fail;
+        STATE_CHECK_VAL(scv, mem);
+        if (scv) goto fail;
 
-       STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem);
-       n = enclen(encode, s);
+        STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem);
+        n = enclen(encode, s);
         DATA_ENSURE(n);
         if (ONIGENC_IS_MBC_NEWLINE(encode, s, end))  goto fail;
         sprev = s;
@@ -1884,20 +1884,20 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
       GET_STATE_CHECK_NUM_INC(mem, p);
       while (DATA_ENSURE_CHECK1) {
-       STATE_CHECK_VAL(scv, mem);
-       if (scv) goto fail;
-
-       STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem);
-       n = enclen(encode, s);
-       if (n > 1) {
-         DATA_ENSURE(n);
-         sprev = s;
-         s += n;
-       }
-       else {
-         sprev = s;
-         s++;
-       }
+        STATE_CHECK_VAL(scv, mem);
+        if (scv) goto fail;
+
+        STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem);
+        n = enclen(encode, s);
+        if (n > 1) {
+          DATA_ENSURE(n);
+          sprev = s;
+          s += n;
+        }
+        else {
+          sprev = s;
+          s++;
+        }
       }
       MOP_OUT;
       break;
@@ -1906,7 +1906,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_WORD:  MOP_IN(OP_WORD);
       DATA_ENSURE(1);
       if (! ONIGENC_IS_MBC_WORD(encode, s, end))
-       goto fail;
+        goto fail;
 
       s += enclen(encode, s);
       MOP_OUT;
@@ -1915,7 +1915,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_NOT_WORD:  MOP_IN(OP_NOT_WORD);
       DATA_ENSURE(1);
       if (ONIGENC_IS_MBC_WORD(encode, s, end))
-       goto fail;
+        goto fail;
 
       s += enclen(encode, s);
       MOP_OUT;
@@ -1923,18 +1923,18 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_WORD_BOUND:  MOP_IN(OP_WORD_BOUND);
       if (ON_STR_BEGIN(s)) {
-       DATA_ENSURE(1);
-       if (! ONIGENC_IS_MBC_WORD(encode, s, end))
-         goto fail;
+        DATA_ENSURE(1);
+        if (! ONIGENC_IS_MBC_WORD(encode, s, end))
+          goto fail;
       }
       else if (ON_STR_END(s)) {
-       if (! ONIGENC_IS_MBC_WORD(encode, sprev, end))
-         goto fail;
+        if (! ONIGENC_IS_MBC_WORD(encode, sprev, end))
+          goto fail;
       }
       else {
-       if (ONIGENC_IS_MBC_WORD(encode, s, end)
-           == ONIGENC_IS_MBC_WORD(encode, sprev, end))
-         goto fail;
+        if (ONIGENC_IS_MBC_WORD(encode, s, end)
+            == ONIGENC_IS_MBC_WORD(encode, sprev, end))
+          goto fail;
       }
       MOP_OUT;
       continue;
@@ -1942,17 +1942,17 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_NOT_WORD_BOUND:  MOP_IN(OP_NOT_WORD_BOUND);
       if (ON_STR_BEGIN(s)) {
-       if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end))
-         goto fail;
+        if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end))
+          goto fail;
       }
       else if (ON_STR_END(s)) {
-       if (ONIGENC_IS_MBC_WORD(encode, sprev, end))
-         goto fail;
+        if (ONIGENC_IS_MBC_WORD(encode, sprev, end))
+          goto fail;
       }
       else {
-       if (ONIGENC_IS_MBC_WORD(encode, s, end)
-           != ONIGENC_IS_MBC_WORD(encode, sprev, end))
-         goto fail;
+        if (ONIGENC_IS_MBC_WORD(encode, s, end)
+            != ONIGENC_IS_MBC_WORD(encode, sprev, end))
+          goto fail;
       }
       MOP_OUT;
       continue;
@@ -1961,20 +1961,20 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 #ifdef USE_WORD_BEGIN_END
     case OP_WORD_BEGIN:  MOP_IN(OP_WORD_BEGIN);
       if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) {
-       if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_WORD(encode, sprev, end)) {
-         MOP_OUT;
-         continue;
-       }
+        if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_WORD(encode, sprev, end)) {
+          MOP_OUT;
+          continue;
+        }
       }
       goto fail;
       break;
 
     case OP_WORD_END:  MOP_IN(OP_WORD_END);
       if (!ON_STR_BEGIN(s) && ONIGENC_IS_MBC_WORD(encode, sprev, end)) {
-       if (ON_STR_END(s) || !ONIGENC_IS_MBC_WORD(encode, s, end)) {
-         MOP_OUT;
-         continue;
-       }
+        if (ON_STR_END(s) || !ONIGENC_IS_MBC_WORD(encode, s, end)) {
+          MOP_OUT;
+          continue;
+        }
       }
       goto fail;
       break;
@@ -1996,13 +1996,13 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_BEGIN_LINE:  MOP_IN(OP_BEGIN_LINE);
       if (ON_STR_BEGIN(s)) {
-       if (IS_NOTBOL(msa->options)) goto fail;
-       MOP_OUT;
-       continue;
+        if (IS_NOTBOL(msa->options)) goto fail;
+        MOP_OUT;
+        continue;
       }
       else if (ONIGENC_IS_MBC_NEWLINE(encode, sprev, end) && !ON_STR_END(s)) {
-       MOP_OUT;
-       continue;
+        MOP_OUT;
+        continue;
       }
       goto fail;
       break;
@@ -2010,23 +2010,23 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_END_LINE:  MOP_IN(OP_END_LINE);
       if (ON_STR_END(s)) {
 #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
-       if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {
+        if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {
 #endif
-         if (IS_NOTEOL(msa->options)) goto fail;
-         MOP_OUT;
-         continue;
+          if (IS_NOTEOL(msa->options)) goto fail;
+          MOP_OUT;
+          continue;
 #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
-       }
+        }
 #endif
       }
       else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) {
-       MOP_OUT;
-       continue;
+        MOP_OUT;
+        continue;
       }
 #ifdef USE_CRNL_AS_LINE_TERMINATOR
       else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) {
-       MOP_OUT;
-       continue;
+        MOP_OUT;
+        continue;
       }
 #endif
       goto fail;
@@ -2035,24 +2035,24 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_SEMI_END_BUF:  MOP_IN(OP_SEMI_END_BUF);
       if (ON_STR_END(s)) {
 #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
-       if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {
+        if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {
 #endif
-         if (IS_NOTEOL(msa->options)) goto fail;
-         MOP_OUT;
-         continue;
+          if (IS_NOTEOL(msa->options)) goto fail;
+          MOP_OUT;
+          continue;
 #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
-       }
+        }
 #endif
       }
       else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end) &&
-              ON_STR_END(s + enclen(encode, s))) {
-       MOP_OUT;
-       continue;
+               ON_STR_END(s + enclen(encode, s))) {
+        MOP_OUT;
+        continue;
       }
 #ifdef USE_CRNL_AS_LINE_TERMINATOR
       else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) {
         UChar* ss = s + enclen(encode, s);
-       ss += enclen(encode, ss);
+        ss += enclen(encode, ss);
         if (ON_STR_END(ss)) {
           MOP_OUT;
           continue;
@@ -2064,7 +2064,7 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_BEGIN_POSITION:  MOP_IN(OP_BEGIN_POSITION);
       if (s != msa->start)
-       goto fail;
+        goto fail;
 
       MOP_OUT;
       continue;
@@ -2114,9 +2114,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       STACK_GET_MEM_START(mem, stkp);
 
       if (BIT_STATUS_AT(reg->bt_mem_start, mem))
-       mem_start_stk[mem] = GET_STACK_INDEX(stkp);
+        mem_start_stk[mem] = GET_STACK_INDEX(stkp);
       else
-       mem_start_stk[mem] = (OnigStackIndex )((void* )stkp->u.mem.pstr);
+        mem_start_stk[mem] = (OnigStackIndex )((void* )stkp->u.mem.pstr);
 
       STACK_PUSH_MEM_END_MARK(mem);
       MOP_OUT;
@@ -2138,171 +2138,170 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       GET_MEMNUM_INC(mem, p);
     backref:
       {
-       int len;
-       UChar *pstart, *pend;
-
-       /* if you want to remove following line, 
-          you should check in parse and compile time. */
-       if (mem > num_mem) goto fail;
-       if (mem_end_stk[mem]   == INVALID_STACK_INDEX) goto fail;
-       if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail;
-
-       if (BIT_STATUS_AT(reg->bt_mem_start, mem))
-         pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
-       else
-         pstart = (UChar* )((void* )mem_start_stk[mem]);
-
-       pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
-               ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
-               : (UChar* )((void* )mem_end_stk[mem]));
-       n = pend - pstart;
-       DATA_ENSURE(n);
-       sprev = s;
-       STRING_CMP(pstart, s, n);
-       while (sprev + (len = enclen(encode, sprev)) < s)
-         sprev += len;
+        int len;
+        UChar *pstart, *pend;
+
+        /* if you want to remove following line, 
+           you should check in parse and compile time. */
+        if (mem > num_mem) goto fail;
+        if (mem_end_stk[mem]   == INVALID_STACK_INDEX) goto fail;
+        if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail;
+
+        if (BIT_STATUS_AT(reg->bt_mem_start, mem))
+          pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
+        else
+          pstart = (UChar* )((void* )mem_start_stk[mem]);
+
+        pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
+                ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
+                : (UChar* )((void* )mem_end_stk[mem]));
+        n = pend - pstart;
+        DATA_ENSURE(n);
+        sprev = s;
+        STRING_CMP(pstart, s, n);
+        while (sprev + (len = enclen(encode, sprev)) < s)
+          sprev += len;
 
-       MOP_OUT;
-       continue;
+        MOP_OUT;
+        continue;
       }
       break;
 
     case OP_BACKREFN_IC:  MOP_IN(OP_BACKREFN_IC);
       GET_MEMNUM_INC(mem, p);
       {
-       int len;
-       UChar *pstart, *pend;
-
-       /* if you want to remove following line, 
-          you should check in parse and compile time. */
-       if (mem > num_mem) goto fail;
-       if (mem_end_stk[mem]   == INVALID_STACK_INDEX) goto fail;
-       if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail;
-
-       if (BIT_STATUS_AT(reg->bt_mem_start, mem))
-         pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
-       else
-         pstart = (UChar* )((void* )mem_start_stk[mem]);
-
-       pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
-               ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
-               : (UChar* )((void* )mem_end_stk[mem]));
-       n = pend - pstart;
-       DATA_ENSURE(n);
-       sprev = s;
-       STRING_CMP_IC(case_fold_flag, pstart, &s, n);
-       while (sprev + (len = enclen(encode, sprev)) < s)
-         sprev += len;
+        int len;
+        UChar *pstart, *pend;
+
+        /* if you want to remove following line, 
+           you should check in parse and compile time. */
+        if (mem > num_mem) goto fail;
+        if (mem_end_stk[mem]   == INVALID_STACK_INDEX) goto fail;
+        if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail;
+
+        if (BIT_STATUS_AT(reg->bt_mem_start, mem))
+          pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
+        else
+          pstart = (UChar* )((void* )mem_start_stk[mem]);
+
+        pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
+                ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
+                : (UChar* )((void* )mem_end_stk[mem]));
+        n = pend - pstart;
+        DATA_ENSURE(n);
+        sprev = s;
+        STRING_CMP_IC(case_fold_flag, pstart, &s, n);
+        while (sprev + (len = enclen(encode, sprev)) < s)
+          sprev += len;
 
-       MOP_OUT;
-       continue;
+        MOP_OUT;
+        continue;
       }
       break;
 
     case OP_BACKREF_MULTI:  MOP_IN(OP_BACKREF_MULTI);
       {
-       int len, is_fail;
-       UChar *pstart, *pend, *swork;
-
-       GET_LENGTH_INC(tlen, p);
-       for (i = 0; i < tlen; i++) {
-         GET_MEMNUM_INC(mem, p);
-
-         if (mem_end_stk[mem]   == INVALID_STACK_INDEX) continue;
-         if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
-
-         if (BIT_STATUS_AT(reg->bt_mem_start, mem))
-           pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
-         else
-           pstart = (UChar* )((void* )mem_start_stk[mem]);
-
-         pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
-                 ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
-                 : (UChar* )((void* )mem_end_stk[mem]));
-         n = pend - pstart;
-         DATA_ENSURE(n);
-         sprev = s;
-         swork = s;
-         STRING_CMP_VALUE(pstart, swork, n, is_fail);
-         if (is_fail) continue;
-         s = swork;
-         while (sprev + (len = enclen(encode, sprev)) < s)
-           sprev += len;
-
-         p += (SIZE_MEMNUM * (tlen - i - 1));
-         break; /* success */
-       }
-       if (i == tlen) goto fail;
-       MOP_OUT;
-       continue;
+        int len, is_fail;
+        UChar *pstart, *pend, *swork;
+
+        GET_LENGTH_INC(tlen, p);
+        for (i = 0; i < tlen; i++) {
+          GET_MEMNUM_INC(mem, p);
+
+          if (mem_end_stk[mem]   == INVALID_STACK_INDEX) continue;
+          if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
+
+          if (BIT_STATUS_AT(reg->bt_mem_start, mem))
+            pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
+          else
+            pstart = (UChar* )((void* )mem_start_stk[mem]);
+
+          pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
+                  ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
+                  : (UChar* )((void* )mem_end_stk[mem]));
+          n = pend - pstart;
+          DATA_ENSURE(n);
+          sprev = s;
+          swork = s;
+          STRING_CMP_VALUE(pstart, swork, n, is_fail);
+          if (is_fail) continue;
+          s = swork;
+          while (sprev + (len = enclen(encode, sprev)) < s)
+            sprev += len;
+
+          p += (SIZE_MEMNUM * (tlen - i - 1));
+          break; /* success */
+        }
+        if (i == tlen) goto fail;
+        MOP_OUT;
+        continue;
       }
       break;
 
     case OP_BACKREF_MULTI_IC:  MOP_IN(OP_BACKREF_MULTI_IC);
       {
-       int len, is_fail;
-       UChar *pstart, *pend, *swork;
-
-       GET_LENGTH_INC(tlen, p);
-       for (i = 0; i < tlen; i++) {
-         GET_MEMNUM_INC(mem, p);
-
-         if (mem_end_stk[mem]   == INVALID_STACK_INDEX) continue;
-         if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
-
-         if (BIT_STATUS_AT(reg->bt_mem_start, mem))
-           pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
-         else
-           pstart = (UChar* )((void* )mem_start_stk[mem]);
-
-         pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
-                 ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
-                 : (UChar* )((void* )mem_end_stk[mem]));
-         n = pend - pstart;
-         DATA_ENSURE(n);
-         sprev = s;
-         swork = s;
-         STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail);
-         if (is_fail) continue;
-         s = swork;
-         while (sprev + (len = enclen(encode, sprev)) < s)
-           sprev += len;
-
-         p += (SIZE_MEMNUM * (tlen - i - 1));
-         break; /* success */
-       }
-       if (i == tlen) goto fail;
-       MOP_OUT;
-       continue;
+        int len, is_fail;
+        UChar *pstart, *pend, *swork;
+
+        GET_LENGTH_INC(tlen, p);
+        for (i = 0; i < tlen; i++) {
+          GET_MEMNUM_INC(mem, p);
+
+          if (mem_end_stk[mem]   == INVALID_STACK_INDEX) continue;
+          if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;
+
+          if (BIT_STATUS_AT(reg->bt_mem_start, mem))
+            pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;
+          else
+            pstart = (UChar* )((void* )mem_start_stk[mem]);
+
+          pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)
+                  ? STACK_AT(mem_end_stk[mem])->u.mem.pstr
+                  : (UChar* )((void* )mem_end_stk[mem]));
+          n = pend - pstart;
+          DATA_ENSURE(n);
+          sprev = s;
+          swork = s;
+          STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail);
+          if (is_fail) continue;
+          s = swork;
+          while (sprev + (len = enclen(encode, sprev)) < s)
+            sprev += len;
+
+          p += (SIZE_MEMNUM * (tlen - i - 1));
+          break; /* success */
+        }
+        if (i == tlen) goto fail;
+        MOP_OUT;
+        continue;
       }
       break;
 
 #ifdef USE_BACKREF_WITH_LEVEL
     case OP_BACKREF_WITH_LEVEL:
       {
-       int len;
-       OnigOptionType ic;
-       LengthType level;
+        int len;
+        OnigOptionType ic;
+        LengthType level;
 
-       GET_OPTION_INC(ic,    p);
-       GET_LENGTH_INC(level, p);
-       GET_LENGTH_INC(tlen,  p);
+        GET_OPTION_INC(ic,    p);
+        GET_LENGTH_INC(level, p);
+        GET_LENGTH_INC(tlen,  p);
 
-       sprev = s;
-       if (backref_match_at_nested_level(reg, stk, stk_base, ic
-                 , case_fold_flag, (int )level, (int )tlen, p, &s, end)) {
-         while (sprev + (len = enclen(encode, sprev)) < s)
-           sprev += len;
+        sprev = s;
+        if (backref_match_at_nested_level(reg, stk, stk_base, ic
+                     , case_fold_flag, (int )level, (int )tlen, p, &s, end)) {
+          while (sprev + (len = enclen(encode, sprev)) < s)
+            sprev += len;
 
-         p += (SIZE_MEMNUM * tlen);
-       }
-       else
-         goto fail;
+          p += (SIZE_MEMNUM * tlen);
+        }
+        else
+          goto fail;
 
-       MOP_OUT;
-       continue;
+        MOP_OUT;
+        continue;
       }
-      
       break;
 #endif
 
@@ -2331,33 +2330,33 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_NULL_CHECK_END:  MOP_IN(OP_NULL_CHECK_END);
       {
-       int isnull;
+        int isnull;
 
-       GET_MEMNUM_INC(mem, p); /* mem: null check id */
-       STACK_NULL_CHECK(isnull, mem, s);
-       if (isnull) {
+        GET_MEMNUM_INC(mem, p); /* mem: null check id */
+        STACK_NULL_CHECK(isnull, mem, s);
+        if (isnull) {
 #ifdef ONIG_DEBUG_MATCH
-         fprintf(stderr, "NULL_CHECK_END: skip  id:%d, s:%d\n",
-                 (int )mem, (int )s);
-#endif
-       null_check_found:
-         /* empty loop founded, skip next instruction */
-         switch (*p++) {
-         case OP_JUMP:
-         case OP_PUSH:
-           p += SIZE_RELADDR;
-           break;
-         case OP_REPEAT_INC:
-         case OP_REPEAT_INC_NG:
-         case OP_REPEAT_INC_SG:
-         case OP_REPEAT_INC_NG_SG:
-           p += SIZE_MEMNUM;
-           break;
-         default:
-           goto unexpected_bytecode_error;
-           break;
-         }
-       }
+          fprintf(stderr, "NULL_CHECK_END: skip  id:%d, s:%d\n",
+                  (int )mem, (int )s);
+#endif
+        null_check_found:
+          /* empty loop founded, skip next instruction */
+          switch (*p++) {
+          case OP_JUMP:
+          case OP_PUSH:
+            p += SIZE_RELADDR;
+            break;
+          case OP_REPEAT_INC:
+          case OP_REPEAT_INC_NG:
+          case OP_REPEAT_INC_SG:
+          case OP_REPEAT_INC_NG_SG:
+            p += SIZE_MEMNUM;
+            break;
+          default:
+            goto unexpected_bytecode_error;
+            break;
+          }
+        }
       }
       MOP_OUT;
       continue;
@@ -2366,18 +2365,18 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 #ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
     case OP_NULL_CHECK_END_MEMST:  MOP_IN(OP_NULL_CHECK_END_MEMST);
       {
-       int isnull;
+        int isnull;
 
-       GET_MEMNUM_INC(mem, p); /* mem: null check id */
-       STACK_NULL_CHECK_MEMST(isnull, mem, s, reg);
-       if (isnull) {
+        GET_MEMNUM_INC(mem, p); /* mem: null check id */
+        STACK_NULL_CHECK_MEMST(isnull, mem, s, reg);
+        if (isnull) {
 #ifdef ONIG_DEBUG_MATCH
-         fprintf(stderr, "NULL_CHECK_END_MEMST: skip  id:%d, s:%d\n",
-                 (int )mem, (int )s);
+          fprintf(stderr, "NULL_CHECK_END_MEMST: skip  id:%d, s:%d\n",
+                  (int )mem, (int )s);
 #endif
-         if (isnull == -1) goto fail;
-         goto  null_check_found;
-       }
+          if (isnull == -1) goto fail;
+          goto         null_check_found;
+        }
       }
       MOP_OUT;
       continue;
@@ -2388,25 +2387,25 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_NULL_CHECK_END_MEMST_PUSH:
       MOP_IN(OP_NULL_CHECK_END_MEMST_PUSH);
       {
-       int isnull;
+        int isnull;
 
-       GET_MEMNUM_INC(mem, p); /* mem: null check id */
+        GET_MEMNUM_INC(mem, p); /* mem: null check id */
 #ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT
-       STACK_NULL_CHECK_MEMST_REC(isnull, mem, s, reg);
+        STACK_NULL_CHECK_MEMST_REC(isnull, mem, s, reg);
 #else
-       STACK_NULL_CHECK_REC(isnull, mem, s);
+        STACK_NULL_CHECK_REC(isnull, mem, s);
 #endif
-       if (isnull) {
+        if (isnull) {
 #ifdef ONIG_DEBUG_MATCH
-         fprintf(stderr, "NULL_CHECK_END_MEMST_PUSH: skip  id:%d, s:%d\n",
-                 (int )mem, (int )s);
+          fprintf(stderr, "NULL_CHECK_END_MEMST_PUSH: skip  id:%d, s:%d\n",
+                  (int )mem, (int )s);
 #endif
-         if (isnull == -1) goto fail;
-         goto  null_check_found;
-       }
-       else {
-         STACK_PUSH_NULL_CHECK_END(mem);
-       }
+          if (isnull == -1) goto fail;
+          goto         null_check_found;
+        }
+        else {
+          STACK_PUSH_NULL_CHECK_END(mem);
+        }
       }
       MOP_OUT;
       continue;
@@ -2445,10 +2444,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       GET_RELADDR_INC(addr, p);
       STATE_CHECK_VAL(scv, mem);
       if (scv) {
-       p += addr;
+        p += addr;
       }
       else {
-       STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem);
+        STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem);
       }
       MOP_OUT;
       continue;
@@ -2474,10 +2473,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_PUSH_OR_JUMP_EXACT1:  MOP_IN(OP_PUSH_OR_JUMP_EXACT1);
       GET_RELADDR_INC(addr, p);
       if (*p == *s && DATA_ENSURE_CHECK1) {
-       p++;
-       STACK_PUSH_ALT(p + addr, s, sprev);
-       MOP_OUT;
-       continue;
+        p++;
+        STACK_PUSH_ALT(p + addr, s, sprev);
+        MOP_OUT;
+        continue;
       }
       p += (addr + 1);
       MOP_OUT;
@@ -2487,10 +2486,10 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
     case OP_PUSH_IF_PEEK_NEXT:  MOP_IN(OP_PUSH_IF_PEEK_NEXT);
       GET_RELADDR_INC(addr, p);
       if (*p == *s) {
-       p++;
-       STACK_PUSH_ALT(p + addr, s, sprev);
-       MOP_OUT;
-       continue;
+        p++;
+        STACK_PUSH_ALT(p + addr, s, sprev);
+        MOP_OUT;
+        continue;
       }
       p++;
       MOP_OUT;
@@ -2499,16 +2498,16 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_REPEAT:  MOP_IN(OP_REPEAT);
       {
-       GET_MEMNUM_INC(mem, p);    /* mem: OP_REPEAT ID */
-       GET_RELADDR_INC(addr, p);
+        GET_MEMNUM_INC(mem, p);    /* mem: OP_REPEAT ID */
+        GET_RELADDR_INC(addr, p);
 
-       STACK_ENSURE(1);
-       repeat_stk[mem] = GET_STACK_INDEX(stk);
-       STACK_PUSH_REPEAT(mem, p);
+        STACK_ENSURE(1);
+        repeat_stk[mem] = GET_STACK_INDEX(stk);
+        STACK_PUSH_REPEAT(mem, p);
 
-       if (reg->repeat_range[mem].lower == 0) {
-         STACK_PUSH_ALT(p + addr, s, sprev);
-       }
+        if (reg->repeat_range[mem].lower == 0) {
+          STACK_PUSH_ALT(p + addr, s, sprev);
+        }
       }
       MOP_OUT;
       continue;
@@ -2516,17 +2515,17 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_REPEAT_NG:  MOP_IN(OP_REPEAT_NG);
       {
-       GET_MEMNUM_INC(mem, p);    /* mem: OP_REPEAT ID */
-       GET_RELADDR_INC(addr, p);
+        GET_MEMNUM_INC(mem, p);    /* mem: OP_REPEAT ID */
+        GET_RELADDR_INC(addr, p);
 
-       STACK_ENSURE(1);
-       repeat_stk[mem] = GET_STACK_INDEX(stk);
-       STACK_PUSH_REPEAT(mem, p);
+        STACK_ENSURE(1);
+        repeat_stk[mem] = GET_STACK_INDEX(stk);
+        STACK_PUSH_REPEAT(mem, p);
 
-       if (reg->repeat_range[mem].lower == 0) {
-         STACK_PUSH_ALT(p, s, sprev);
-         p += addr;
-       }
+        if (reg->repeat_range[mem].lower == 0) {
+          STACK_PUSH_ALT(p, s, sprev);
+          p += addr;
+        }
       }
       MOP_OUT;
       continue;
@@ -2604,9 +2603,9 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
 
     case OP_POP_POS:  MOP_IN(OP_POP_POS);
       {
-       STACK_POS_END(stkp);
-       s     = stkp->u.state.pstr;
-       sprev = stkp->u.state.pstr_prev;
+        STACK_POS_END(stkp);
+        s     = stkp->u.state.pstr;
+        sprev = stkp->u.state.pstr_prev;
       }
       MOP_OUT;
       continue;
@@ -2650,15 +2649,15 @@ match_at(regex_t* reg, const UChar* str, const UChar* end,
       GET_LENGTH_INC(tlen, p);
       q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen);
       if (IS_NULL(q)) {
-       /* too short case -> success. ex. /(?<!XXX)a/.match("a")
-          If you want to change to fail, replace following line. */
-       p += addr;
-       /* goto fail; */
+        /* too short case -> success. ex. /(?<!XXX)a/.match("a")
+           If you want to change to fail, replace following line. */
+        p += addr;
+        /* goto fail; */
       }
       else {
-       STACK_PUSH_LOOK_BEHIND_NOT(p + addr, s, sprev);
-       s = q;
-       sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);
+        STACK_PUSH_LOOK_BEHIND_NOT(p + addr, s, sprev);
+        s = q;
+        sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);
       }
       MOP_OUT;
       continue;
@@ -2755,12 +2754,12 @@ slow_search(OnigEncoding enc, UChar* target, UChar* target_end,
       p = s + 1;
       t = target + 1;
       while (t < target_end) {
-       if (*t != *p++)
-         break;
-       t++;
+        if (*t != *p++)
+          break;
+        t++;
       }
       if (t == target_end)
-       return s;
+        return s;
     }
     s += enclen(enc, s);
   }
@@ -2832,12 +2831,12 @@ slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end,
       p = s + 1;
       t = target + 1;
       while (t < target_end) {
-       if (*t != *p++)
-         break;
-       t++;
+        if (*t != *p++)
+          break;
+        t++;
       }
       if (t == target_end)
-       return s;
+        return s;
     }
     s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s);
   }
@@ -2898,8 +2897,8 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end,
       p = se = s + tlen1;
       t = tail;
       while (*p == *t) {
-       if (t == target) return (UChar* )s;
-       p--; t--;
+        if (t == target) return (UChar* )s;
+        p--; t--;
       }
       skip = reg->map[*se];
       t = s;
@@ -2913,8 +2912,8 @@ bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end,
       p = se = s + tlen1;
       t = tail;
       while (*p == *t) {
-       if (t == target) return (UChar* )s;
-       p--; t--;
+        if (t == target) return (UChar* )s;
+        p--; t--;
       }
       skip = reg->int_map[*se];
       t = s;
@@ -2945,8 +2944,8 @@ bm_search(regex_t* reg, const UChar* target, const UChar* target_end,
       p = s;
       t = tail;
       while (*p == *t) {
-       if (t == target) return (UChar* )p;
-       p--; t--;
+        if (t == target) return (UChar* )p;
+        p--; t--;
       }
       s += reg->map[*s];
     }
@@ -2956,8 +2955,8 @@ bm_search(regex_t* reg, const UChar* target, const UChar* target_end,
       p = s;
       t = tail;
       while (*p == *t) {
-       if (t == target) return (UChar* )p;
-       p--; t--;
+        if (t == target) return (UChar* )p;
+        p--; t--;
       }
       s += reg->int_map[*s];
     }
@@ -3144,58 +3143,58 @@ forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,
 
       switch (reg->sub_anchor) {
       case ANCHOR_BEGIN_LINE:
-       if (!ON_STR_BEGIN(p)) {
-         prev = onigenc_get_prev_char_head(reg->enc,
-                                           (pprev ? pprev : str), p);
-         if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end))
-           goto retry_gate;
-       }
-       break;
+        if (!ON_STR_BEGIN(p)) {
+          prev = onigenc_get_prev_char_head(reg->enc,
+                                            (pprev ? pprev : str), p);
+          if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end))
+            goto retry_gate;
+        }
+        break;
 
       case ANCHOR_END_LINE:
-       if (ON_STR_END(p)) {
+        if (ON_STR_END(p)) {
 #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
-         prev = (UChar* )onigenc_get_prev_char_head(reg->enc,
-                                           (pprev ? pprev : str), p);
-         if (prev && ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end))
-           goto retry_gate;
+          prev = (UChar* )onigenc_get_prev_char_head(reg->enc,
+                                                     (pprev ? pprev : str), p);
+          if (prev && ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end))
+            goto retry_gate;
 #endif
-       }
-       else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end)
+        }
+        else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end)
 #ifdef USE_CRNL_AS_LINE_TERMINATOR
-              && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end)
+                 && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end)
 #endif
-                )
-         goto retry_gate;
-       break;
+                 )
+          goto retry_gate;
+        break;
       }
     }
 
     if (reg->dmax == 0) {
       *low = p;
       if (low_prev) {
-       if (*low > s)
-         *low_prev = onigenc_get_prev_char_head(reg->enc, s, p);
-       else
-         *low_prev = onigenc_get_prev_char_head(reg->enc,
-                                                (pprev ? pprev : str), p);
+        if (*low > s)
+          *low_prev = onigenc_get_prev_char_head(reg->enc, s, p);
+        else
+          *low_prev = onigenc_get_prev_char_head(reg->enc,
+                                                 (pprev ? pprev : str), p);
       }
     }
     else {
       if (reg->dmax != ONIG_INFINITE_DISTANCE) {
-       *low = p - reg->dmax;
-       if (*low > s) {
-         *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s,
-                                                             *low, (const UChar** )low_prev);
-         if (low_prev && IS_NULL(*low_prev))
-           *low_prev = onigenc_get_prev_char_head(reg->enc,
-                                                  (pprev ? pprev : s), *low);
-       }
-       else {
-         if (low_prev)
-           *low_prev = onigenc_get_prev_char_head(reg->enc,
-                                              (pprev ? pprev : str), *low);
-       }
+        *low = p - reg->dmax;
+        if (*low > s) {
+          *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s,
+                                          *low, (const UChar** )low_prev);
+          if (low_prev && IS_NULL(*low_prev))
+            *low_prev = onigenc_get_prev_char_head(reg->enc,
+                                                   (pprev ? pprev : s), *low);
+        }
+        else {
+          if (low_prev)
+            *low_prev = onigenc_get_prev_char_head(reg->enc,
+                                                   (pprev ? pprev : str), *low);
+        }
       }
     }
     /* no needs to adjust *high, *high is used as range check only */
@@ -3246,14 +3245,14 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
       int r;
 
       if (s - range < BM_BACKWARD_SEARCH_LENGTH_THRESHOLD)
-       goto exact_method;
+        goto exact_method;
 
       r = set_bm_backward_skip(reg->exact, reg->exact_end, reg->enc,
-                              &(reg->int_map_backward));
+                               &(reg->int_map_backward));
       if (r) return r;
     }
     p = bm_search_backward(reg, reg->exact, reg->exact_end, range, adjrange,
-                          end, p);
+                           end, p);
 #else
     goto exact_method;
 #endif
@@ -3270,36 +3269,36 @@ backward_search_range(regex_t* reg, const UChar* str, const UChar* end,
 
       switch (reg->sub_anchor) {
       case ANCHOR_BEGIN_LINE:
-       if (!ON_STR_BEGIN(p)) {
-         prev = onigenc_get_prev_char_head(reg->enc, str, p);
-         if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) {
-           p = prev;
-           goto retry;
-         }
-       }
-       break;
+        if (!ON_STR_BEGIN(p)) {
+          prev = onigenc_get_prev_char_head(reg->enc, str, p);
+          if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) {
+            p = prev;
+            goto retry;
+          }
+        }
+        break;
 
       case ANCHOR_END_LINE:
-       if (ON_STR_END(p)) {
+        if (ON_STR_END(p)) {
 #ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE
-         prev = onigenc_get_prev_char_head(reg->enc, adjrange, p);
-         if (IS_NULL(prev)) goto fail;
-         if (ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) {
-           p = prev;
-           goto retry;
-         }
-#endif
-       }
-       else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end)
+          prev = onigenc_get_prev_char_head(reg->enc, adjrange, p);
+          if (IS_NULL(prev)) goto fail;
+          if (ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) {
+            p = prev;
+            goto retry;
+          }
+#endif
+        }
+        else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end)
 #ifdef USE_CRNL_AS_LINE_TERMINATOR
-              && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end)
+                 && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end)
 #endif
-                ) {
-         p = onigenc_get_prev_char_head(reg->enc, adjrange, p);
-         if (IS_NULL(p)) goto fail;
-         goto retry;
-       }
-       break;
+                 ) {
+          p = onigenc_get_prev_char_head(reg->enc, adjrange, p);
+          if (IS_NULL(p)) goto fail;
+          goto retry;
+        }
+        break;
       }
     }
 
@@ -3410,23 +3409,23 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
       /* search start-position only */
     begin_position:
       if (range > start)
-       range = start + 1;
+        range = start + 1;
       else
-       range = start;
+        range = start;
     }
     else if (reg->anchor & ANCHOR_BEGIN_BUF) {
       /* search str-position only */
       if (range > start) {
-       if (start != str) goto mismatch_no_msa;
-       range = str + 1;
+        if (start != str) goto mismatch_no_msa;
+        range = str + 1;
       }
       else {
-       if (range <= str) {
-         start = str;
-         range = str;
-       }
-       else
-         goto mismatch_no_msa;
+        if (range <= str) {
+          start = str;
+          range = str;
+        }
+        else
+          goto mismatch_no_msa;
       }
     }
     else if (reg->anchor & ANCHOR_END_BUF) {
@@ -3437,29 +3436,29 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
        goto mismatch_no_msa;
 
       if (range > start) {
-       if ((OnigDistance )(min_semi_end - start) > reg->anchor_dmax) {
-         start = min_semi_end - reg->anchor_dmax;
-         if (start < end)
-           start = onigenc_get_right_adjust_char_head(reg->enc, str, start);
-         else { /* match with empty at end */
-           start = onigenc_get_prev_char_head(reg->enc, str, end);
-         }
-       }
-       if ((OnigDistance )(max_semi_end - (range - 1)) < reg->anchor_dmin) {
-         range = max_semi_end - reg->anchor_dmin + 1;
-       }
-
-       if (start >= range) goto mismatch_no_msa;
+        if ((OnigDistance )(min_semi_end - start) > reg->anchor_dmax) {
+          start = min_semi_end - reg->anchor_dmax;
+          if (start < end)
+            start = onigenc_get_right_adjust_char_head(reg->enc, str, start);
+          else { /* match with empty at end */
+            start = onigenc_get_prev_char_head(reg->enc, str, end);
+          }
+        }
+        if ((OnigDistance )(max_semi_end - (range - 1)) < reg->anchor_dmin) {
+          range = max_semi_end - reg->anchor_dmin + 1;
+        }
+
+        if (start >= range) goto mismatch_no_msa;
       }
       else {
-       if ((OnigDistance )(min_semi_end - range) > reg->anchor_dmax) {
-         range = min_semi_end - reg->anchor_dmax;
-       }
-       if ((OnigDistance )(max_semi_end - start) < reg->anchor_dmin) {
-         start = max_semi_end - reg->anchor_dmin;
-         start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start);
-       }
-       if (range > start) goto mismatch_no_msa;
+        if ((OnigDistance )(min_semi_end - range) > reg->anchor_dmax) {
+          range = min_semi_end - reg->anchor_dmax;
+        }
+        if ((OnigDistance )(max_semi_end - start) < reg->anchor_dmin) {
+          start = max_semi_end - reg->anchor_dmin;
+          start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start);
+        }
+        if (range > start) goto mismatch_no_msa;
       }
     }
     else if (reg->anchor & ANCHOR_SEMI_END_BUF) {
@@ -3467,22 +3466,22 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
 
       max_semi_end = (UChar* )end;
       if (ONIGENC_IS_MBC_NEWLINE(reg->enc, pre_end, end)) {
-       min_semi_end = pre_end;
+        min_semi_end = pre_end;
 
 #ifdef USE_CRNL_AS_LINE_TERMINATOR
-       pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, 1);
-       if (IS_NOT_NULL(pre_end) &&
-           ONIGENC_IS_MBC_CRNL(reg->enc, pre_end, end)) {
-         min_semi_end = pre_end;
-       }
+        pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, 1);
+        if (IS_NOT_NULL(pre_end) &&
+            ONIGENC_IS_MBC_CRNL(reg->enc, pre_end, end)) {
+          min_semi_end = pre_end;
+        }
 #endif
-       if (min_semi_end > str && start <= min_semi_end) {
-         goto end_buf;
-       }
+        if (min_semi_end > str && start <= min_semi_end) {
+          goto end_buf;
+        }
       }
       else {
-       min_semi_end = (UChar* )end;
-       goto end_buf;
+        min_semi_end = (UChar* )end;
+        goto end_buf;
       }
     }
     else if ((reg->anchor & ANCHOR_ANYCHAR_STAR_ML)) {
@@ -3537,36 +3536,36 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
 
       sch_range = (UChar* )range;
       if (reg->dmax != 0) {
-       if (reg->dmax == ONIG_INFINITE_DISTANCE)
-         sch_range = (UChar* )end;
-       else {
-         sch_range += reg->dmax;
-         if (sch_range > end) sch_range = (UChar* )end;
-       }
+        if (reg->dmax == ONIG_INFINITE_DISTANCE)
+          sch_range = (UChar* )end;
+        else {
+          sch_range += reg->dmax;
+          if (sch_range > end) sch_range = (UChar* )end;
+        }
       }
 
       if ((end - start) < reg->threshold_len)
         goto mismatch;
 
       if (reg->dmax != ONIG_INFINITE_DISTANCE) {
-       do {
-         if (! forward_search_range(reg, str, end, s, sch_range,
-                                    &low, &high, &low_prev)) goto mismatch;
-         if (s < low) {
-           s    = low;
-           prev = low_prev;
-         }
-         while (s <= high) {
-           MATCH_AND_RETURN_CHECK(orig_range);
-           prev = s;
-           s += enclen(reg->enc, s);
-         }
-       } while (s < range);
-       goto mismatch;
+        do {
+          if (! forward_search_range(reg, str, end, s, sch_range,
+                                     &low, &high, &low_prev)) goto mismatch;
+          if (s < low) {
+            s    = low;
+            prev = low_prev;
+          }
+          while (s <= high) {
+            MATCH_AND_RETURN_CHECK(orig_range);
+            prev = s;
+            s += enclen(reg->enc, s);
+          }
+        } while (s < range);
+        goto mismatch;
       }
       else { /* check only. */
-       if (! forward_search_range(reg, str, end, s, sch_range,
-                                  &low, &high, (UChar** )NULL)) goto mismatch;
+        if (! forward_search_range(reg, str, end, s, sch_range,
+                                   &low, &high, (UChar** )NULL)) goto mismatch;
 
         if ((reg->anchor & ANCHOR_ANYCHAR_STAR) != 0) {
           do {
@@ -3604,47 +3603,47 @@ onig_search(regex_t* reg, const UChar* str, const UChar* end,
       UChar *low, *high, *adjrange, *sch_start;
 
       if (range < end)
-       adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range);
+        adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range);
       else
-       adjrange = (UChar* )end;
+        adjrange = (UChar* )end;
 
       if (reg->dmax != ONIG_INFINITE_DISTANCE &&
-         (end - range) >= reg->threshold_len) {
-       do {
-         sch_start = s + reg->dmax;
-         if (sch_start > end) sch_start = (UChar* )end;
-         if (backward_search_range(reg, str, end, sch_start, range, adjrange,
-                                   &low, &high) <= 0)
-           goto mismatch;
-
-         if (s > high)
-           s = high;
-
-         while (s >= low) {
-           prev = onigenc_get_prev_char_head(reg->enc, str, s);
-           MATCH_AND_RETURN_CHECK(orig_start);
-           s = prev;
-         }
-       } while (s >= range);
-       goto mismatch;
+          (end - range) >= reg->threshold_len) {
+        do {
+          sch_start = s + reg->dmax;
+          if (sch_start > end) sch_start = (UChar* )end;
+          if (backward_search_range(reg, str, end, sch_start, range, adjrange,
+                                    &low, &high) <= 0)
+            goto mismatch;
+
+          if (s > high)
+            s = high;
+
+          while (s >= low) {
+            prev = onigenc_get_prev_char_head(reg->enc, str, s);
+            MATCH_AND_RETURN_CHECK(orig_start);
+            s = prev;
+          }
+        } while (s >= range);
+        goto mismatch;
       }
       else { /* check only. */
-       if ((end - range) < reg->threshold_len) goto mismatch;
-
-       sch_start = s;
-       if (reg->dmax != 0) {
-         if (reg->dmax == ONIG_INFINITE_DISTANCE)
-           sch_start = (UChar* )end;
-         else {
-           sch_start += reg->dmax;
-           if (sch_start > end) sch_start = (UChar* )end;
-           else
-             sch_start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc,
-                                                   start, sch_start);
-         }
-       }
-       if (backward_search_range(reg, str, end, sch_start, range, adjrange,
-                                 &low, &high) <= 0) goto mismatch;
+        if ((end - range) < reg->threshold_len) goto mismatch;
+
+        sch_start = s;
+        if (reg->dmax != 0) {
+          if (reg->dmax == ONIG_INFINITE_DISTANCE)
+            sch_start = (UChar* )end;
+          else {
+            sch_start += reg->dmax;
+            if (sch_start > end) sch_start = (UChar* )end;
+            else
+              sch_start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc,
+                                                        start, sch_start);
+          }
+        }
+        if (backward_search_range(reg, str, end, sch_start, range, adjrange,
+                                  &low, &high) <= 0) goto mismatch;
       }
     }