Skip to content

Commit 614de94

Browse files
committed
feat: ability to override the default allocator
1 parent cb567ca commit 614de94

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

include/rcutils/allocator.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,10 @@ RCUTILS_WARN_UNUSED
108108
rcutils_allocator_t
109109
rcutils_get_default_allocator(void);
110110

111+
RCUTILS_PUBLIC
112+
void
113+
rcutils_set_default_allocator(rcutils_allocator_t override_allocator);
114+
111115
/// Return true if the given allocator has non-null function pointers.
112116
/**
113117
* \param[in] allocator to be checked by the function

src/allocator.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,31 @@ rcutils_get_zero_initialized_allocator(void)
6969
return zero_allocator;
7070
}
7171

72+
// have the ability to override the default allocator
73+
static rcutils_allocator_t
74+
rcutils_override_default_allocator;
75+
76+
void
77+
rcutils_set_default_allocator(rcutils_allocator_t override_allocator)
78+
{
79+
if (rcutils_allocator_is_valid(&override_allocator))
80+
rcutils_override_default_allocator = override_allocator;
81+
}
82+
7283
rcutils_allocator_t
7384
rcutils_get_default_allocator(void)
7485
{
86+
if (rcutils_allocator_is_valid(&rcutils_override_default_allocator))
87+
return rcutils_override_default_allocator;
88+
7589
static rcutils_allocator_t default_allocator = {
7690
.allocate = __default_allocate,
7791
.deallocate = __default_deallocate,
7892
.reallocate = __default_reallocate,
7993
.zero_allocate = __default_zero_allocate,
8094
.state = NULL,
8195
};
96+
8297
return default_allocator;
8398
}
8499

0 commit comments

Comments
 (0)