aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarl Heuer1994-11-16 04:48:37 +0000
committerKarl Heuer1994-11-16 04:48:37 +0000
commit1825c68d0c522e82968bccb90d34f3f525946ba2 (patch)
tree21a7592613c4cc1886ceb40427a9fdadac93da69
parentb8e0549dc41377a70d2467571dfcbccbecd412f7 (diff)
downloademacs-1825c68d0c522e82968bccb90d34f3f525946ba2.tar.gz
emacs-1825c68d0c522e82968bccb90d34f3f525946ba2.zip
(Fmake_vector): Call allocate_vectorlike.
(allocate_vectorlike): New function, extracted from Fmake_vector.
-rw-r--r--src/alloc.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 62f37d61bfa..e8c137bb4ed 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -583,32 +583,43 @@ DEFUN ("make-list", Fmake_list, Smake_list, 2, 2, 0,
583 583
584struct Lisp_Vector *all_vectors; 584struct Lisp_Vector *all_vectors;
585 585
586struct Lisp_Vector *
587allocate_vectorlike (len)
588 EMACS_INT len;
589{
590 struct Lisp_Vector *p;
591
592 p = (struct Lisp_Vector *)xmalloc (sizeof (struct Lisp_Vector)
593 + (len - 1) * sizeof (Lisp_Object));
594 VALIDATE_LISP_STORAGE (p, 0);
595 consing_since_gc += (sizeof (struct Lisp_Vector)
596 + (len - 1) * sizeof (Lisp_Object));
597
598 p->next = all_vectors;
599 all_vectors = p;
600 return p;
601}
602
586DEFUN ("make-vector", Fmake_vector, Smake_vector, 2, 2, 0, 603DEFUN ("make-vector", Fmake_vector, Smake_vector, 2, 2, 0,
587 "Return a newly created vector of length LENGTH, with each element being INIT.\n\ 604 "Return a newly created vector of length LENGTH, with each element being INIT.\n\
588See also the function `vector'.") 605See also the function `vector'.")
589 (length, init) 606 (length, init)
590 register Lisp_Object length, init; 607 register Lisp_Object length, init;
591{ 608{
592 register int sizei, index; 609 Lisp_Object vector;
593 register Lisp_Object vector; 610 register EMACS_INT sizei;
611 register int index;
594 register struct Lisp_Vector *p; 612 register struct Lisp_Vector *p;
595 613
596 CHECK_NATNUM (length, 0); 614 CHECK_NATNUM (length, 0);
597 sizei = XFASTINT (length); 615 sizei = XFASTINT (length);
598 616
599 p = (struct Lisp_Vector *) xmalloc (sizeof (struct Lisp_Vector) + (sizei - 1) * sizeof (Lisp_Object)); 617 p = allocate_vectorlike (sizei);
600 VALIDATE_LISP_STORAGE (p, 0);
601
602 XSETVECTOR (vector, p);
603 consing_since_gc += sizeof (struct Lisp_Vector) + (sizei - 1) * sizeof (Lisp_Object);
604
605 p->size = sizei; 618 p->size = sizei;
606 p->next = all_vectors;
607 all_vectors = p;
608
609 for (index = 0; index < sizei; index++) 619 for (index = 0; index < sizei; index++)
610 p->contents[index] = init; 620 p->contents[index] = init;
611 621
622 XSETVECTOR (vector, p);
612 return vector; 623 return vector;
613} 624}
614 625