summaryrefslogtreecommitdiff
path: root/src/font.c
diff options
context:
space:
mode:
authorDmitry Antipov <dmantipov@yandex.ru>2014-09-22 10:06:19 +0400
committerDmitry Antipov <dmantipov@yandex.ru>2014-09-22 10:06:19 +0400
commit99c3fad7d44ceced111d8fa1b46d938bd4c67c73 (patch)
tree4860666f44b9de20ac38373336b60e78bbc65053 /src/font.c
parentf135e94e4ecb4c6d3f88c7e028c935c2858f2e02 (diff)
downloademacs-99c3fad7d44ceced111d8fa1b46d938bd4c67c73.tar.gz
Avoid extra call to oblookup when interning symbols.
* lisp.h (intern_driver): Add prototype. * lread.c (intern_driver): New function. (intern1, intern_c_string_1, Fintern): * font.c (font_intern_prop): * w32font.c (intern_font_name): Use it.
Diffstat (limited to 'src/font.c')
-rw-r--r--src/font.c13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/font.c b/src/font.c
index 57cc4aa0b2b..83860090820 100644
--- a/src/font.c
+++ b/src/font.c
@@ -277,10 +277,8 @@ static int num_font_drivers;
Lisp_Object
font_intern_prop (const char *str, ptrdiff_t len, bool force_symbol)
{
- ptrdiff_t i;
- Lisp_Object tem;
- Lisp_Object obarray;
- ptrdiff_t nbytes, nchars;
+ ptrdiff_t i, nbytes, nchars;
+ Lisp_Object tem, name, obarray;
if (len == 1 && *str == '*')
return Qnil;
@@ -311,12 +309,11 @@ font_intern_prop (const char *str, ptrdiff_t len, bool force_symbol)
parse_str_as_multibyte ((unsigned char *) str, len, &nchars, &nbytes);
tem = oblookup (obarray, str,
(len == nchars || len != nbytes) ? len : nchars, len);
-
if (SYMBOLP (tem))
return tem;
- tem = make_specified_string (str, nchars, len,
- len != nchars && len == nbytes);
- return Fintern (tem, obarray);
+ name = make_specified_string (str, nchars, len,
+ len != nchars && len == nbytes);
+ return intern_driver (name, obarray, XINT (tem));
}
/* Return a pixel size of font-spec SPEC on frame F. */