changeset 10011:f4f2563057b8

(recompute_width_table): Do the right thing if no previous table existed. Fix Lisp_Object vs. integer problem. (width_run_cache_on_off): Let recompute_width_table create the vector.
author Karl Heuer <kwzh@gnu.org>
date Fri, 18 Nov 1994 07:17:17 +0000
parents 67375493afa2
children 4b936f4cad5c
files src/indent.c
diffstat 1 files changed, 5 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/indent.c	Fri Nov 18 06:50:02 1994 +0000
+++ b/src/indent.c	Fri Nov 18 07:17:17 1994 +0000
@@ -130,16 +130,16 @@
      struct Lisp_Vector *disptab;
 {
   int i;
-  struct Lisp_Vector *widthtab
-    = (VECTORP (buf->width_table)
-       ? XVECTOR (buf->width_table)
-       : XVECTOR (Fmake_vector (make_number (256), make_number (0))));
+  struct Lisp_Vector *widthtab;
 
+  if (!VECTORP (buf->width_table))
+    buf->width_table = Fmake_vector (make_number (256), make_number (0));
+  widthtab = XVECTOR (buf->width_table);
   if (widthtab->size != 256)
     abort ();
 
   for (i = 0; i < 256; i++)
-    widthtab->contents[i] = character_width (i, disptab);
+    XSETFASTINT (widthtab->contents[i], character_width (i, disptab));
 }
 
 /* Allocate or free the width run cache, as requested by the current
@@ -163,8 +163,6 @@
       if (current_buffer->width_run_cache == 0)
         { 
           current_buffer->width_run_cache = new_region_cache ();
-          current_buffer->width_table = Fmake_vector (make_number (256),
-                                                      make_number (0));
           recompute_width_table (current_buffer, buffer_display_table ());
         }
     }