changeset 9970:76910d506a80

(make_dummy_parent, make_window): Use allocate_vectorlike and VECSIZE.
author Karl Heuer <kwzh@gnu.org>
date Wed, 16 Nov 1994 05:16:42 +0000
parents 007d93b04e1f
children 214a00665c2b
files src/window.c
diffstat 1 files changed, 22 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/src/window.c	Wed Nov 16 05:03:02 1994 +0000
+++ b/src/window.c	Wed Nov 16 05:16:42 1994 +0000
@@ -119,18 +119,16 @@
 Lisp_Object
 make_window ()
 {
-  register Lisp_Object val;
+  Lisp_Object val;
   register struct window *p;
-
-  /* Add sizeof (Lisp_Object) here because sizeof (struct Lisp_Vector)
-     includes the first element.  */
-  val = Fmake_vector (
-    make_number ((sizeof (struct window) - sizeof (struct Lisp_Vector)
-		  + sizeof (Lisp_Object))
-		 / sizeof (Lisp_Object)),
-    Qnil);
-  XSETTYPE (val, Lisp_Window);
-  p = XWINDOW (val);
+  register struct Lisp_Vector *vec;
+  int i;
+
+  vec = allocate_vectorlike ((EMACS_INT) VECSIZE (struct window));
+  for (i = 0; i < VECSIZE (struct window); i++)
+    vec->contents[i] = Qnil;
+  vec->size = VECSIZE (struct window);
+  p = (struct window *)vec;
   XSETFASTINT (p->sequence_number, ++sequence_number);
   XSETFASTINT (p->left, 0);
   XSETFASTINT (p->top, 0);
@@ -145,6 +143,7 @@
   p->frame = Qnil;
   p->display_table = Qnil;
   p->dedicated = Qnil;
+  XSETWINDOW (val, p);
   return val;
 }
 
@@ -2042,16 +2041,19 @@
 make_dummy_parent (window)
      Lisp_Object window;
 {
-  register Lisp_Object old, new;
+  Lisp_Object new;
   register struct window *o, *p;
-
-  old = window;
-  XSETTYPE (old, Lisp_Vector);
-  new = Fcopy_sequence (old);
-  XSETTYPE (new, Lisp_Window);
-
-  o = XWINDOW (old);
-  p = XWINDOW (new);
+  register struct Lisp_Vector *vec;
+  int i;
+
+  o = XWINDOW (window);
+  vec = allocate_vectorlike ((EMACS_INT)VECSIZE (struct window));
+  for (i = 0; i < VECSIZE (struct window); ++i)
+    vec->contents[i] = ((struct Lisp_Vector *)o)->contents[i];
+  vec->size = VECSIZE (struct window);
+  p = (struct window *)vec;
+  XSETWINDOW (new, p);
+
   XSETFASTINT (p->sequence_number, ++sequence_number);
 
   /* Put new into window structure in place of window */