aboutsummaryrefslogtreecommitdiffstats
path: root/src/window.c
diff options
context:
space:
mode:
authorKarl Heuer <[email protected]>1994-11-16 05:16:42 +0000
committerKarl Heuer <[email protected]>1994-11-16 05:16:42 +0000
commitcffec418d6dc9e0de14d57d722208a11e6f0ac17 (patch)
tree365f433a5c2d7ae39d2d938be1921b1e22cf2202 /src/window.c
parent23d6bb9cd84ed2bfa80b15707cdb771faae165b2 (diff)
(make_dummy_parent, make_window): Use allocate_vectorlike and VECSIZE.
Diffstat (limited to 'src/window.c')
-rw-r--r--src/window.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/src/window.c b/src/window.c
index 822dcea719..0ede40c240 100644
--- a/src/window.c
+++ b/src/window.c
@@ -119,18 +119,16 @@ DEFUN ("window-live-p", Fwindow_live_p, Swindow_live_p, 1, 1, 0,
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 @@ make_window ()
p->frame = Qnil;
p->display_table = Qnil;
p->dedicated = Qnil;
+ XSETWINDOW (val, p);
return val;
}
@@ -2042,16 +2041,19 @@ static
make_dummy_parent (window)
Lisp_Object window;
{
- register Lisp_Object old, new;
+ Lisp_Object new;
register struct window *o, *p;
+ register struct Lisp_Vector *vec;
+ int i;
- old = window;
- XSETTYPE (old, Lisp_Vector);
- new = Fcopy_sequence (old);
- XSETTYPE (new, Lisp_Window);
+ 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);
- o = XWINDOW (old);
- p = XWINDOW (new);
XSETFASTINT (p->sequence_number, ++sequence_number);
/* Put new into window structure in place of window */