mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-17 18:37:33 +00:00
(merge_named_face): GCPRO the face_name in the
named_merge_point struct that we make. (merge_face_heights): Eliminate GCPRO arg. All callers changed.
This commit is contained in:
parent
3b6536b101
commit
e1e419ecc6
1 changed files with 12 additions and 14 deletions
26
src/xfaces.c
26
src/xfaces.c
|
|
@ -3432,8 +3432,8 @@ set_lface_from_font_name (f, lface, fontname, force_p, may_fail_p)
|
|||
call into lisp. */
|
||||
|
||||
Lisp_Object
|
||||
merge_face_heights (from, to, invalid, gcpro)
|
||||
Lisp_Object from, to, invalid, gcpro;
|
||||
merge_face_heights (from, to, invalid)
|
||||
Lisp_Object from, to, invalid;
|
||||
{
|
||||
Lisp_Object result = invalid;
|
||||
|
||||
|
|
@ -3458,16 +3458,11 @@ merge_face_heights (from, to, invalid, gcpro)
|
|||
/* Call function with current height as argument.
|
||||
From is the new height. */
|
||||
Lisp_Object args[2];
|
||||
struct gcpro gcpro1;
|
||||
|
||||
GCPRO1 (gcpro);
|
||||
|
||||
args[0] = from;
|
||||
args[1] = to;
|
||||
result = safe_call (2, args);
|
||||
|
||||
UNGCPRO;
|
||||
|
||||
/* Ensure that if TO was absolute, so is the result. */
|
||||
if (INTEGERP (to) && !INTEGERP (result))
|
||||
result = invalid;
|
||||
|
|
@ -3520,8 +3515,7 @@ merge_face_vectors (f, from, to, named_merge_points)
|
|||
if (!UNSPECIFIEDP (from[i]))
|
||||
{
|
||||
if (i == LFACE_HEIGHT_INDEX && !INTEGERP (from[i]))
|
||||
to[i] = merge_face_heights (from[i], to[i], to[i],
|
||||
named_merge_points);
|
||||
to[i] = merge_face_heights (from[i], to[i], to[i]);
|
||||
else
|
||||
to[i] = from[i];
|
||||
}
|
||||
|
|
@ -3548,11 +3542,16 @@ merge_named_face (f, face_name, to, named_merge_points)
|
|||
if (push_named_merge_point (&named_merge_point,
|
||||
face_name, &named_merge_points))
|
||||
{
|
||||
struct gcpro gcpro1;
|
||||
Lisp_Object from[LFACE_VECTOR_SIZE];
|
||||
int ok = get_lface_attributes (f, face_name, from, 0);
|
||||
|
||||
if (ok)
|
||||
merge_face_vectors (f, from, to, named_merge_points);
|
||||
{
|
||||
GCPRO1 (named_merge_point.face_name);
|
||||
merge_face_vectors (f, from, to, named_merge_points);
|
||||
UNGCPRO;
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
|
@ -3643,8 +3642,7 @@ merge_face_ref (f, face_ref, to, err_msgs, named_merge_points)
|
|||
else if (EQ (keyword, QCheight))
|
||||
{
|
||||
Lisp_Object new_height =
|
||||
merge_face_heights (value, to[LFACE_HEIGHT_INDEX],
|
||||
Qnil, Qnil);
|
||||
merge_face_heights (value, to[LFACE_HEIGHT_INDEX], Qnil);
|
||||
|
||||
if (! NILP (new_height))
|
||||
to[LFACE_HEIGHT_INDEX] = new_height;
|
||||
|
|
@ -4031,7 +4029,7 @@ FRAME 0 means change the face on all frames, and change the default
|
|||
/* The default face must have an absolute size,
|
||||
otherwise, we do a test merge with a random
|
||||
height to see if VALUE's ok. */
|
||||
: merge_face_heights (value, make_number (10), Qnil, Qnil));
|
||||
: merge_face_heights (value, make_number (10), Qnil));
|
||||
|
||||
if (!INTEGERP (test) || XINT (test) <= 0)
|
||||
signal_error ("Invalid face height", value);
|
||||
|
|
@ -4737,7 +4735,7 @@ the result will be absolute, otherwise it will be relative. */)
|
|||
if (EQ (value1, Qunspecified))
|
||||
return value2;
|
||||
else if (EQ (attribute, QCheight))
|
||||
return merge_face_heights (value1, value2, value1, Qnil);
|
||||
return merge_face_heights (value1, value2, value1);
|
||||
else
|
||||
return value1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue