HCoop
/
bpt
/
emacs.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
d756bcd
)
(font_parse_fcname): Fix handling of unknown-spec string.
author
Chong Yidong
<cyd@stupidchicken.com>
Mon, 16 Jun 2008 14:35:24 +0000
(14:35 +0000)
committer
Chong Yidong
<cyd@stupidchicken.com>
Mon, 16 Jun 2008 14:35:24 +0000
(14:35 +0000)
src/font.c
patch
|
blob
|
blame
|
history
diff --git
a/src/font.c
b/src/font.c
index
5ee4d3a
..
4205481
100644
(file)
--- a/
src/font.c
+++ b/
src/font.c
@@
-1407,9
+1407,9
@@
font_parse_fcname (name, font)
/* Now parse ":KEY=VAL" patterns. Store known keys and values in
extra, copy unknown ones to COPY. It is stored in extra slot by
the key QCfc_unknown_spec. */
/* Now parse ":KEY=VAL" patterns. Store known keys and values in
extra, copy unknown ones to COPY. It is stored in extra slot by
the key QCfc_unknown_spec. */
- char *copy;
+ char *copy
_start, *copy
;
-
name
= copy = alloca (name + len - props_beg);
+
copy_start
= copy = alloca (name + len - props_beg);
if (! copy)
return -1;
if (! copy)
return -1;
@@
-1467,10
+1467,11
@@
font_parse_fcname (name, font)
key = font_intern_prop (p, q - p, 1);
prop = get_font_prop_index (key);
}
key = font_intern_prop (p, q - p, 1);
prop = get_font_prop_index (key);
}
+
p = q + 1;
for (q = p; *q && *q != ':'; q++);
p = q + 1;
for (q = p; *q && *q != ':'; q++);
-
val = font_intern_prop (p, q - p, 0);
val = font_intern_prop (p, q - p, 0);
+
if (! NILP (val))
{
if (prop >= FONT_FOUNDRY_INDEX
if (! NILP (val))
{
if (prop >= FONT_FOUNDRY_INDEX
@@
-1480,15
+1481,19
@@
font_parse_fcname (name, font)
else if (prop >= 0)
Ffont_put (font, key, val);
else
else if (prop >= 0)
Ffont_put (font, key, val);
else
- bcopy (keyhead, copy, q - keyhead);
- copy += q - keyhead;
+ {
+ if (copy_start != copy)
+ *copy++ = ':';
+ bcopy (keyhead, copy, q - keyhead);
+ copy += q - keyhead;
+ }
}
}
p = *q ? q + 1 : q;
}
}
}
p = *q ? q + 1 : q;
}
- if (
name
!= copy)
+ if (
copy_start
!= copy)
font_put_extra (font, QCfc_unknown_spec,
font_put_extra (font, QCfc_unknown_spec,
- make_unibyte_string (
name, copy - name
));
+ make_unibyte_string (
copy_start, copy - copy_start
));
}
}
else
}
}
else