From 4428609619012013fe869dd2b35b14eddbb1d338 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 9 Jun 2012 15:27:15 +0800 Subject: [PATCH] * fringe.c (Fset_fringe_bitmap_face): Handle the noninteractive case. Fixes: debbugs:9752 --- src/ChangeLog | 5 +++++ src/fringe.c | 14 +++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 4d93c65fa1f..c221746824a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-06-09 Chong Yidong + + * fringe.c (Fset_fringe_bitmap_face): Handle the noninteractive + case (Bug#9752). + 2012-06-08 Paul Eggert * xdisp.c (vmessage): Treat frame message as multibyte. diff --git a/src/fringe.c b/src/fringe.c index c591d391e9f..39f7e8dbb54 100644 --- a/src/fringe.c +++ b/src/fringe.c @@ -1671,23 +1671,27 @@ If FACE is nil, reset face to default fringe face. */) (Lisp_Object bitmap, Lisp_Object face) { int n; - int face_id; CHECK_SYMBOL (bitmap); n = lookup_fringe_bitmap (bitmap); if (!n) error ("Undefined fringe bitmap"); + /* The purpose of the following code is to signal an error if FACE + is not a face. This is for the caller's convenience only; the + redisplay code should be able to fail gracefully. Skip the check + if FRINGE_FACE_ID is unrealized (as in batch mode and during + daemon startup). */ if (!NILP (face)) { - face_id = lookup_derived_face (SELECTED_FRAME (), face, - FRINGE_FACE_ID, 1); - if (face_id < 0) + struct frame *f = SELECTED_FRAME (); + + if (FACE_FROM_ID (f, FRINGE_FACE_ID) + && lookup_derived_face (f, face, FRINGE_FACE_ID, 1) < 0) error ("No such face"); } fringe_faces[n] = face; - return Qnil; } -- 2.39.5