aboutsummaryrefslogtreecommitdiffstats
path: root/src/alloc.c
diff options
context:
space:
mode:
authorKarl Heuer <[email protected]>1994-11-16 04:48:37 +0000
committerKarl Heuer <[email protected]>1994-11-16 04:48:37 +0000
commit1825c68d0c522e82968bccb90d34f3f525946ba2 (patch)
tree21a7592613c4cc1886ceb40427a9fdadac93da69 /src/alloc.c
parentb8e0549dc41377a70d2467571dfcbccbecd412f7 (diff)
(Fmake_vector): Call allocate_vectorlike.
(allocate_vectorlike): New function, extracted from Fmake_vector.
Diffstat (limited to 'src/alloc.c')
-rw-r--r--src/alloc.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 62f37d61bf..e8c137bb4e 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -583,32 +583,43 @@ DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0,
struct Lisp_Vector *all_vectors;
+struct Lisp_Vector *
+allocate_vectorlike (len)
+ EMACS_INT len;
+{
+ struct Lisp_Vector *p;
+
+ p = (struct Lisp_Vector *)xmalloc (sizeof (struct Lisp_Vector)
+ + (len - 1) * sizeof (Lisp_Object));
+ VALIDATE_LISP_STORAGE (p, 0);
+ consing_since_gc += (sizeof (struct Lisp_Vector)
+ + (len - 1) * sizeof (Lisp_Object));
+
+ p->next = all_vectors;
+ all_vectors = p;
+ return p;
+}
+
DEFUN ("make-vector", Fmake_vector, Smake_vector, 2, 2, 0,
"Return a newly created vector of length LENGTH, with each element being INIT.\n\
See also the function `vector'.")
(length, init)
register Lisp_Object length, init;
{
- register int sizei, index;
- register Lisp_Object vector;
+ Lisp_Object vector;
+ register EMACS_INT sizei;
+ register int index;
register struct Lisp_Vector *p;
CHECK_NATNUM (length, 0);
sizei = XFASTINT (length);
- p = (struct Lisp_Vector *) xmalloc (sizeof (struct Lisp_Vector) + (sizei - 1) * sizeof (Lisp_Object));
- VALIDATE_LISP_STORAGE (p, 0);
-
- XSETVECTOR (vector, p);
- consing_since_gc += sizeof (struct Lisp_Vector) + (sizei - 1) * sizeof (Lisp_Object);
-
+ p = allocate_vectorlike (sizei);
p->size = sizei;
- p->next = all_vectors;
- all_vectors = p;
-
for (index = 0; index < sizei; index++)
p->contents[index] = init;
+ XSETVECTOR (vector, p);
return vector;
}