* character.h (CHAR_TO_BYTE_SAFE): New macro.
* character.c (Fmultibyte_char_to_unibyte): Obey the docstring. * regex.c (RE_CHAR_TO_UNIBYTE): Use the new macro. (WEAK_ALIAS): Simplify. * syntax.c (skip_chars): Don't mark non-byte chars in the fastmap when searching a unibyte buffer.
This commit is contained in:
parent
667adde160
commit
2afc21f5f6
5 changed files with 28 additions and 14 deletions
|
|
@ -1,3 +1,12 @@
|
|||
2008-06-12 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
* character.h (CHAR_TO_BYTE_SAFE): New macro.
|
||||
* character.c (Fmultibyte_char_to_unibyte): Obey the docstring.
|
||||
* regex.c (RE_CHAR_TO_UNIBYTE): Use the new macro.
|
||||
(WEAK_ALIAS): Simplify.
|
||||
* syntax.c (skip_chars): Don't mark non-byte chars in the fastmap
|
||||
when searching a unibyte buffer.
|
||||
|
||||
2008-06-12 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* xfns.c (Fx_select_font): Rename from x-font-dialog.
|
||||
|
|
@ -8,10 +17,10 @@
|
|||
|
||||
2008-06-11 Jason Rumney <jasonr@gnu.org>
|
||||
|
||||
* w32font.c (w32font_encode_char): Detect missing glyphs that are
|
||||
misreported as space.
|
||||
(add_font_entity_to_list): Support unicode-bmp and unicode-sip
|
||||
as aliases for registry iso10646-1.
|
||||
* w32font.c (w32font_encode_char): Detect missing glyphs that are
|
||||
misreported as space.
|
||||
(add_font_entity_to_list): Support unicode-bmp and unicode-sip
|
||||
as aliases for registry iso10646-1.
|
||||
|
||||
2008-06-11 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
|
|
|
|||
|
|
@ -359,7 +359,7 @@ If the multibyte character does not represent a byte, return -1. */)
|
|||
return ch;
|
||||
else
|
||||
{
|
||||
int cu = CHAR_TO_BYTE8 (cm);
|
||||
int cu = CHAR_TO_BYTE_SAFE (cm);
|
||||
return make_number (cu);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,6 +68,13 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
? (c) - 0x3FFF00 \
|
||||
: multibyte_char_to_unibyte (c, Qnil))
|
||||
|
||||
/* Return the raw 8-bit byte for character C,
|
||||
or -1 if C doesn't correspond to a byte. */
|
||||
#define CHAR_TO_BYTE_SAFE(c) \
|
||||
(CHAR_BYTE8_P (c) \
|
||||
? (c) - 0x3FFF00 \
|
||||
: multibyte_char_to_unibyte_safe (c, Qnil))
|
||||
|
||||
/* Nonzero iff BYTE is the 1st byte of a multibyte form of a character
|
||||
that corresponds to a raw 8-bit byte. */
|
||||
#define CHAR_BYTE8_HEAD_P(byte) ((byte) == 0xC0 || (byte) == 0xC1)
|
||||
|
|
|
|||
10
src/regex.c
10
src/regex.c
|
|
@ -153,10 +153,7 @@
|
|||
|
||||
# define RE_CHAR_TO_MULTIBYTE(c) unibyte_to_multibyte_table[(c)]
|
||||
|
||||
# define RE_CHAR_TO_UNIBYTE(c) \
|
||||
(ASCII_CHAR_P (c) ? (c) \
|
||||
: CHAR_BYTE8_P (c) ? CHAR_TO_BYTE8 (c) \
|
||||
: multibyte_char_to_unibyte_safe (c))
|
||||
# define RE_CHAR_TO_UNIBYTE(c) CHAR_TO_BYTE_SAFE (c)
|
||||
|
||||
/* Set C a (possibly converted to multibyte) character before P. P
|
||||
points into a string which is the virtual concatenation of STR1
|
||||
|
|
@ -5574,10 +5571,7 @@ re_match_2_internal (bufp, string1, size1, string2, size2, pos, regs, stop)
|
|||
if (multibyte)
|
||||
{
|
||||
pat_ch = STRING_CHAR_AND_LENGTH (p, pend - p, pat_charlen);
|
||||
if (CHAR_BYTE8_P (pat_ch))
|
||||
pat_ch = CHAR_TO_BYTE8 (pat_ch);
|
||||
else
|
||||
pat_ch = RE_CHAR_TO_UNIBYTE (pat_ch);
|
||||
pat_ch = RE_CHAR_TO_UNIBYTE (pat_ch);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1711,7 +1711,11 @@ skip_chars (forwardp, string, lim, handle_iso_classes)
|
|||
int c2 = char_ranges[i + 1];
|
||||
|
||||
for (; c1 <= c2; c1++)
|
||||
fastmap[CHAR_TO_BYTE8 (c1)] = 1;
|
||||
{
|
||||
int b = CHAR_TO_BYTE_SAFE (c1);
|
||||
if (b >= 0)
|
||||
fastmap[b] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue