]> git.cameronkatri.com Git - cgit.git/blob - vector.c
Fix silly spelling error.
[cgit.git] / vector.c
1 #include <stdio.h>
2 #include <string.h>
3 #include <errno.h>
4 #include "vector.h"
5
6 static int grow(struct vector *vec, int gently)
7 {
8 size_t new_alloc;
9 void *new_data;
10
11 new_alloc = vec->alloc * 3 / 2;
12 if (!new_alloc)
13 new_alloc = 8;
14 new_data = realloc(vec->data, new_alloc * vec->size);
15 if (!new_data) {
16 if (gently)
17 return ENOMEM;
18 perror("vector.c:grow()");
19 exit(1);
20 }
21 vec->data = new_data;
22 vec->alloc = new_alloc;
23 return 0;
24 }
25
26 int vector_push(struct vector *vec, const void *data, int gently)
27 {
28 int rc;
29
30 if (vec->count == vec->alloc && (rc = grow(vec, gently)))
31 return rc;
32 if (data)
33 memmove(vec->data + vec->count * vec->size, data, vec->size);
34 else
35 memset(vec->data + vec->count * vec->size, 0, vec->size);
36 vec->count++;
37 return 0;
38 }