Skip to content

Commit 20a23ea

Browse files
authored
Fix setting allocator to NULL. (#478)
* Fix setting allocator to NULL. That is, previously the code was setting the allocator at runtime, not during static initialization. Switch to static initialization, which should fix a possible race. * Statically initialize all zero_initialized functions. Signed-off-by: Chris Lalancette <[email protected]>
1 parent 94ec3d8 commit 20a23ea

8 files changed

+8
-33
lines changed

src/allocator.c

+1-7
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,7 @@ __default_zero_allocate(size_t number_of_elements, size_t size_of_element, void
6565
rcutils_allocator_t
6666
rcutils_get_zero_initialized_allocator(void)
6767
{
68-
static rcutils_allocator_t zero_allocator = {
69-
.allocate = NULL,
70-
.deallocate = NULL,
71-
.reallocate = NULL,
72-
.zero_allocate = NULL,
73-
.state = NULL,
74-
};
68+
static rcutils_allocator_t zero_allocator = {0};
7569
return zero_allocator;
7670
}
7771

src/array_list.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ typedef struct rcutils_array_list_impl_s
4444
rcutils_array_list_t
4545
rcutils_get_zero_initialized_array_list(void)
4646
{
47-
static rcutils_array_list_t zero_initialized_array_list = {NULL};
47+
static rcutils_array_list_t zero_initialized_array_list = {0};
4848
return zero_initialized_array_list;
4949
}
5050

src/char_array.c

+1-7
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,7 @@
2121
rcutils_char_array_t
2222
rcutils_get_zero_initialized_char_array(void)
2323
{
24-
static rcutils_char_array_t char_array = {
25-
.buffer = NULL,
26-
.owns_buffer = true,
27-
.buffer_length = 0u,
28-
.buffer_capacity = 0u
29-
};
30-
char_array.allocator = rcutils_get_zero_initialized_allocator();
24+
static rcutils_char_array_t char_array = {0};
3125
return char_array;
3226
}
3327

src/hash_map.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ int rcutils_hash_map_string_cmp_func(const void * val1, const void * val2)
7777
rcutils_hash_map_t
7878
rcutils_get_zero_initialized_hash_map(void)
7979
{
80-
static rcutils_hash_map_t zero_initialized_hash_map = {NULL};
80+
static rcutils_hash_map_t zero_initialized_hash_map = {0};
8181
return zero_initialized_hash_map;
8282
}
8383

src/shared_library.c

+1-4
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,7 @@ C_ASSERT(sizeof(char) == sizeof(TCHAR));
5656
rcutils_shared_library_t
5757
rcutils_get_zero_initialized_shared_library(void)
5858
{
59-
rcutils_shared_library_t zero_initialized_shared_library;
60-
zero_initialized_shared_library.library_path = NULL;
61-
zero_initialized_shared_library.lib_pointer = NULL;
62-
zero_initialized_shared_library.allocator = rcutils_get_zero_initialized_allocator();
59+
static rcutils_shared_library_t zero_initialized_shared_library = {0};
6360
return zero_initialized_shared_library;
6461
}
6562

src/string_array.c

+1-5
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,7 @@ extern "C"
2828
rcutils_string_array_t
2929
rcutils_get_zero_initialized_string_array(void)
3030
{
31-
static rcutils_string_array_t array = {
32-
.size = 0,
33-
.data = NULL,
34-
};
35-
array.allocator = rcutils_get_zero_initialized_allocator();
31+
static rcutils_string_array_t array = {0};
3632
return array;
3733
}
3834

src/string_map.c

+1-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ typedef struct rcutils_string_map_impl_s
4646
rcutils_string_map_t
4747
rcutils_get_zero_initialized_string_map(void)
4848
{
49-
static rcutils_string_map_t zero_initialized_string_map;
50-
zero_initialized_string_map.impl = NULL;
49+
static rcutils_string_map_t zero_initialized_string_map = {0};
5150
return zero_initialized_string_map;
5251
}
5352

src/uint8_array.c

+1-6
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,7 @@
1818
rcutils_uint8_array_t
1919
rcutils_get_zero_initialized_uint8_array(void)
2020
{
21-
static rcutils_uint8_array_t uint8_array = {
22-
.buffer = NULL,
23-
.buffer_length = 0lu,
24-
.buffer_capacity = 0lu
25-
};
26-
uint8_array.allocator = rcutils_get_zero_initialized_allocator();
21+
static rcutils_uint8_array_t uint8_array = {0};
2722
return uint8_array;
2823
}
2924

0 commit comments

Comments
 (0)