emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/src/regex.c


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/src/regex.c
Date: Wed, 15 Jan 2003 23:31:55 -0500

Index: emacs/src/regex.c
diff -c emacs/src/regex.c:1.183 emacs/src/regex.c:1.184
*** emacs/src/regex.c:1.183     Mon Nov 18 10:40:28 2002
--- emacs/src/regex.c   Wed Jan 15 23:31:55 2003
***************
*** 157,164 ****
         {                                                              \
         re_char *dtemp = (p) == (str2) ? (end1) : (p);                 \
         re_char *dlimit = ((p) > (str2) && (p) <= (end2)) ? (str2) : (str1); \
!        while (dtemp-- > dlimit && !CHAR_HEAD_P (*dtemp));             \
!        c = STRING_CHAR (dtemp, (p) - dtemp);                          \
         }                                                              \
       else                                                             \
         (c = ((p) == (str2) ? (end1) : (p))[-1]);                      \
--- 157,165 ----
         {                                                              \
         re_char *dtemp = (p) == (str2) ? (end1) : (p);                 \
         re_char *dlimit = ((p) > (str2) && (p) <= (end2)) ? (str2) : (str1); \
!        re_char *d0 = dtemp;                                           \
!        PREV_CHAR_BOUNDARY (d0, dlimit);                               \
!        c = STRING_CHAR (d0, dtemp - d0);                              \
         }                                                              \
       else                                                             \
         (c = ((p) == (str2) ? (end1) : (p))[-1]);                      \
***************
*** 235,240 ****
--- 236,242 ----
  # define SINGLE_BYTE_CHAR_P(c) (1)
  # define SAME_CHARSET_P(c1, c2) (1)
  # define MULTIBYTE_FORM_LENGTH(p, s) (1)
+ # define PREV_CHAR_BOUNDARY(p, limit) ((p)--)
  # define STRING_CHAR(p, s) (*(p))
  # define RE_STRING_CHAR STRING_CHAR
  # define CHAR_STRING(c, s) (*(s) = (c), 1)
***************
*** 4064,4069 ****
--- 4066,4075 ----
  }
  WEAK_ALIAS (__re_search, re_search)
  
+ /* Head address of virtual concatenation of string.  */
+ #define HEAD_ADDR_VSTRING(P)          \
+   (((P) >= size1 ? string2 : string1))
+ 
  /* End address of virtual concatenation of string.  */
  #define STOP_ADDR_VSTRING(P)                          \
    (((P) >= size1 ? string2 + size2 : string1 + size1))
***************
*** 4299,4324 ****
          /* Update STARTPOS to the previous character boundary.  */
          if (multibyte)
            {
!             re_char *p = POS_ADDR_VSTRING (startpos);
!             int len = 0;
  
              /* Find the head of multibyte form.  */
!             while (!CHAR_HEAD_P (*p))
!               p--, len++;
! 
!             /* Adjust it. */
! #if 0                         /* XXX */
!             if (MULTIBYTE_FORM_LENGTH (p, len + 1) != (len + 1))
!               ;
!             else
! #endif
!               {
!                 range += len;
!                 if (range > 0)
!                   break;
  
!                 startpos -= len;
!               }
            }
        }
      }
--- 4305,4321 ----
          /* Update STARTPOS to the previous character boundary.  */
          if (multibyte)
            {
!             re_char *p = POS_ADDR_VSTRING (startpos) + 1;
!             re_char *p0 = p;
!             re_char *phead = HEAD_ADDR_VSTRING (startpos);
  
              /* Find the head of multibyte form.  */
!             PREV_CHAR_BOUNDARY (p, phead);
!             range += p0 - 1 - p;
!             if (range > 0)
!               break;
  
!             startpos -= p0 - 1 - p;
            }
        }
      }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]