mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-12-25 10:47:00 +00:00
(font_intern_prop): Validate str as multibyte.
This commit is contained in:
parent
25f0137554
commit
545312c251
@ -1,3 +1,7 @@
|
||||
2008-12-30 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* font.c (font_intern_prop): Validate str as multibyte.
|
||||
|
||||
2008-12-29 Dan Nicolaescu <dann@ics.uci.edu>
|
||||
|
||||
* dispextern.h (struct face): Move lface and hash from the middle
|
||||
|
18
src/font.c
18
src/font.c
@ -254,6 +254,7 @@ font_intern_prop (str, len, force_symbol)
|
||||
int i;
|
||||
Lisp_Object tem;
|
||||
Lisp_Object obarray;
|
||||
int nbytes, nchars;
|
||||
|
||||
if (len == 1 && *str == '*')
|
||||
return Qnil;
|
||||
@ -266,14 +267,25 @@ font_intern_prop (str, len, force_symbol)
|
||||
return make_number (atoi (str));
|
||||
}
|
||||
|
||||
/* The following code is copied from the function intern (in lread.c). */
|
||||
/* The following code is copied from the function intern (in
|
||||
lread.c), and modified to suite our purpose. */
|
||||
obarray = Vobarray;
|
||||
if (!VECTORP (obarray) || XVECTOR (obarray)->size == 0)
|
||||
obarray = check_obarray (obarray);
|
||||
tem = oblookup (obarray, str, len, len);
|
||||
parse_str_as_multibyte (str, len, &nchars, &nbytes);
|
||||
if (len == nchars || len != nbytes)
|
||||
/* CONTENTS contains no multibyte sequences or contains an invalid
|
||||
multibyte sequence. We'll make a unibyte string. */
|
||||
tem = oblookup (obarray, str, len, len);
|
||||
else
|
||||
tem = oblookup (obarray, str, nchars, len);
|
||||
if (SYMBOLP (tem))
|
||||
return tem;
|
||||
return Fintern (make_unibyte_string (str, len), obarray);
|
||||
if (len == nchars || len != nbytes)
|
||||
tem = make_unibyte_string (str, len);
|
||||
else
|
||||
tem = make_multibyte_string (str, nchars, len);
|
||||
return Fintern (tem, obarray);
|
||||
}
|
||||
|
||||
/* Return a pixel size of font-spec SPEC on frame F. */
|
||||
|
Loading…
Reference in New Issue
Block a user