Line Flow Count Block(s) Source
1 - /*
2 - * Copyright (C) the libgit2 contributors. All rights reserved.
3 - *
4 - * This file is part of libgit2, distributed under the GNU GPL v2 with
5 - * a Linking Exception. For full terms see the included COPYING file.
6 - */
7 -
8 - #include "util.h"
9 -
10 - #include "common.h"
11 -
12 56 2 int git_strarray_copy(git_strarray *tgt, const git_strarray *src)
13 - {
14 - size_t i;
15 -
16 56 2-4 assert(tgt && src);
17 -
18 56 5 memset(tgt, 0, sizeof(*tgt));
19 -
20 56 5 if (!src->count)
21 53 6 return 0;
22 -
23 3 7 tgt->strings = git__calloc(src->count, sizeof(char *));
24 3 8,9 GIT_ERROR_CHECK_ALLOC(tgt->strings);
25 -
26 6 10,18,19 for (i = 0; i < src->count; ++i) {
27 3 11 if (!src->strings[i])
28 ##### 12 continue;
29 -
30 3 13 tgt->strings[tgt->count] = git__strdup(src->strings[i]);
31 3 14 if (!tgt->strings[tgt->count]) {
32 ##### 15 git_strarray_dispose(tgt);
33 ##### 16 memset(tgt, 0, sizeof(*tgt));
34 ##### 16 return -1;
35 - }
36 -
37 3 17 tgt->count++;
38 - }
39 -
40 3 20 return 0;
41 - }
42 -
43 372 2 void git_strarray_dispose(git_strarray *array)
44 - {
45 - size_t i;
46 -
47 372 2 if (array == NULL)
48 372 3,10 return;
49 -
50 2827 4,6,7 for (i = 0; i < array->count; ++i)
51 2455 5 git__free(array->strings[i]);
52 -
53 372 8 git__free(array->strings);
54 -
55 372 9 memset(array, 0, sizeof(*array));
56 - }
57 -
58 - #ifndef GIT_DEPRECATE_HARD
59 ##### 2 void git_strarray_free(git_strarray *array)
60 - {
61 ##### 2 git_strarray_dispose(array);
62 ##### 3 }
63 - #endif