# HG changeset patch # User Karl Heuer # Date 784963002 0 # Node ID 76910d506a8009a271058ea91a24ce09caba5ded # Parent 007d93b04e1f0e38b85f63b6adcd5c70370ac07b (make_dummy_parent, make_window): Use allocate_vectorlike and VECSIZE. diff -r 007d93b04e1f -r 76910d506a80 src/window.c --- 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 */