[Top][All Lists]
[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;
}
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] Changes to emacs/src/regex.c,
Kenichi Handa <=