changeset 92287:53a9aa8fe860

(display_mode_element): Cancel the previous change. (decode_mode_spec): Likewise.
author Kenichi Handa <handa@m17n.org>
date Thu, 28 Feb 2008 02:57:23 +0000
parents b014e94ceb97
children b94c0a2204fd
files src/xdisp.c
diffstat 1 files changed, 9 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/xdisp.c	Thu Feb 28 01:58:07 2008 +0000
+++ b/src/xdisp.c	Thu Feb 28 02:57:23 2008 +0000
@@ -917,8 +917,7 @@
 static int display_mode_line P_ ((struct window *, enum face_id, Lisp_Object));
 static int display_mode_element P_ ((struct it *, int, int, int, Lisp_Object, Lisp_Object, int));
 static int store_mode_line_string P_ ((char *, Lisp_Object, int, int, int, Lisp_Object));
-static char *decode_mode_spec P_ ((struct window *, int, int, int, int *,
-				   Lisp_Object *));
+static char *decode_mode_spec P_ ((struct window *, int, int, int, int *));
 static void display_menu_bar P_ ((struct window *));
 static int display_count_lines P_ ((int, int, int, int, int *));
 static int display_string P_ ((unsigned char *, Lisp_Object, Lisp_Object,
@@ -17223,14 +17222,13 @@
 		    int multibyte;
 		    int bytepos, charpos;
 		    unsigned char *spec;
-		    Lisp_Object string;
 
 		    bytepos = percent_position;
 		    charpos = (STRING_MULTIBYTE (elt)
 			       ? string_byte_to_char (elt, bytepos)
 			       : bytepos);
-		    spec = decode_mode_spec (it->w, c, field, prec, &multibyte,
-					     &string);
+		    spec
+		      = decode_mode_spec (it->w, c, field, prec, &multibyte);
 
 		    switch (mode_line_target)
 		      {
@@ -17240,24 +17238,19 @@
 			break;
 		      case MODE_LINE_STRING:
 			{
-			  if (NILP (string))
-			    {
-			      int len = strlen (spec);
-			      string = make_string (spec, len);
-			    }
+			  int len = strlen (spec);
+			  Lisp_Object tem = make_string (spec, len);
 			  props = Ftext_properties_at (make_number (charpos), elt);
 			  /* Should only keep face property in props */
-			  n += store_mode_line_string (NULL, string, 0, field, prec, props);
+			  n += store_mode_line_string (NULL, tem, 0, field, prec, props);
 			}
 			break;
 		      case MODE_LINE_DISPLAY:
 			{
 			  int nglyphs_before, nwritten;
 
-			  if (STRINGP (string))
-			    spec = NULL;
 			  nglyphs_before = it->glyph_row->used[TEXT_AREA];
-			  nwritten = display_string (spec, string, elt,
+			  nwritten = display_string (spec, Qnil, elt,
 						     charpos, 0, it,
 						     field, prec, 0,
 						     multibyte);
@@ -17921,19 +17914,18 @@
 static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------";
 
 static char *
-decode_mode_spec (w, c, field_width, precision, multibyte, string)
+decode_mode_spec (w, c, field_width, precision, multibyte)
      struct window *w;
      register int c;
      int field_width, precision;
      int *multibyte;
-     Lisp_Object *string;
 {
   Lisp_Object obj;
   struct frame *f = XFRAME (WINDOW_FRAME (w));
   char *decode_mode_spec_buf = f->decode_mode_spec_buffer;
   struct buffer *b = current_buffer;
 
-  *string = obj = Qnil;
+  obj = Qnil;
   *multibyte = 0;
 
   switch (c)
@@ -18326,7 +18318,6 @@
   if (STRINGP (obj))
     {
       *multibyte = STRING_MULTIBYTE (obj);
-      *string = obj;
       return (char *) SDATA (obj);
     }
   else