From a78b677aed1215eb4c5e4156b4ee584594abd854 Mon Sep 17 00:00:00 2001 From: Christoph Mallon Date: Fri, 3 Oct 2008 18:47:39 +0000 Subject: [PATCH] Fix too short allocations and missing initialisation when allocation/copying vectors. [r22442] --- vector.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/vector.c b/vector.c index 0459afa4c..c7dad8be2 100644 --- a/vector.c +++ b/vector.c @@ -5,11 +5,10 @@ vector *vector_alloc(pbqp *pbqp, unsigned length) { - vector *vec; unsigned index; assert(length > 0); - vec = obstack_alloc(&pbqp->obstack, sizeof(*vec) + sizeof(vec_elem) * (length - 1)); + vector *vec = obstack_alloc(&pbqp->obstack, sizeof(*vec) + sizeof(*vec->entries) * length); assert(vec); vec->len = length; @@ -25,14 +24,14 @@ vector *vector_alloc(pbqp *pbqp, unsigned length) vector *vector_copy(pbqp *pbqp, vector *v) { - int i; - int len; - vector *copy = obstack_alloc(&pbqp->obstack, sizeof(*copy)); + unsigned i; + vector *copy = obstack_alloc(&pbqp->obstack, sizeof(*copy) + sizeof(*copy->entries) * length); assert(copy); - len = v->len; + unsigned len = v->len; + copy->len = len; for (i = 0; i < len; ++i) { copy->entries[i] = v->entries[i]; } -- 2.20.1