3232
3333struct rmw_uxrce_mempool_t session_memory ;
3434rmw_context_impl_t custom_sessions [RMW_UXRCE_MAX_SESSIONS ];
35+ static bool session_memory_init = false;
3536
3637struct rmw_uxrce_mempool_t node_memory ;
3738rmw_uxrce_node_t custom_nodes [RMW_UXRCE_MAX_NODES ];
39+ static bool node_memory_init = false;
3840
3941struct rmw_uxrce_mempool_t publisher_memory ;
4042rmw_uxrce_publisher_t custom_publishers [RMW_UXRCE_MAX_PUBLISHERS + RMW_UXRCE_MAX_NODES ];
43+ static bool publisher_memory_init = false;
4144
4245struct rmw_uxrce_mempool_t subscription_memory ;
4346rmw_uxrce_subscription_t custom_subscriptions [RMW_UXRCE_MAX_SUBSCRIPTIONS ];
47+ static bool subscription_memory_init = false;
4448
4549struct rmw_uxrce_mempool_t service_memory ;
4650rmw_uxrce_service_t custom_services [RMW_UXRCE_MAX_SERVICES ];
51+ static bool service_memory_init = false;
4752
4853struct rmw_uxrce_mempool_t client_memory ;
4954rmw_uxrce_client_t custom_clients [RMW_UXRCE_MAX_CLIENTS ];
55+ static bool client_memory_init = false;
5056
5157// Memory init functions
5258
5359void rmw_uxrce_init_service_memory (struct rmw_uxrce_mempool_t * memory , rmw_uxrce_service_t * services , size_t size )
5460{
55- if (size > 0 ) {
61+ if (size > 0 && !service_memory_init ) {
62+ service_memory_init = true;
5663 link_prev (NULL , & services [0 ].mem , NULL );
5764 size > 1 ? link_next (& services [0 ].mem , & services [1 ].mem , & services [0 ]) : link_next (
5865 & services [0 ].mem , NULL , & services [0 ]);
@@ -66,7 +73,8 @@ void rmw_uxrce_init_service_memory(struct rmw_uxrce_mempool_t * memory, rmw_uxrc
6673
6774void rmw_uxrce_init_client_memory (struct rmw_uxrce_mempool_t * memory , rmw_uxrce_client_t * clients , size_t size )
6875{
69- if (size > 0 ) {
76+ if (size > 0 && !client_memory_init ) {
77+ client_memory_init = true;
7078 link_prev (NULL , & clients [0 ].mem , NULL );
7179 size > 1 ? link_next (& clients [0 ].mem , & clients [1 ].mem , & clients [0 ]) : link_next (
7280 & clients [0 ].mem , NULL , & clients [0 ]);
@@ -80,7 +88,8 @@ void rmw_uxrce_init_client_memory(struct rmw_uxrce_mempool_t * memory, rmw_uxrce
8088
8189void rmw_uxrce_init_publisher_memory (struct rmw_uxrce_mempool_t * memory , rmw_uxrce_publisher_t * publishers , size_t size )
8290{
83- if (size > 0 ) {
91+ if (size > 0 && !publisher_memory_init ) {
92+ publisher_memory_init = true;
8493 link_prev (NULL , & publishers [0 ].mem , NULL );
8594 size > 1 ? link_next (& publishers [0 ].mem , & publishers [1 ].mem , & publishers [0 ]) : link_next (
8695 & publishers [0 ].mem , NULL , & publishers [0 ]);
@@ -94,7 +103,8 @@ void rmw_uxrce_init_publisher_memory(struct rmw_uxrce_mempool_t * memory, rmw_ux
94103
95104void rmw_uxrce_init_subscriber_memory (struct rmw_uxrce_mempool_t * memory , rmw_uxrce_subscription_t * subscribers , size_t size )
96105{
97- if (size > 0 ) {
106+ if (size > 0 && !subscription_memory_init ) {
107+ subscription_memory_init = true;
98108 link_prev (NULL , & subscribers [0 ].mem , NULL );
99109 size > 1 ? link_next (& subscribers [0 ].mem , & subscribers [1 ].mem , & subscribers [0 ]) : link_next (
100110 & subscribers [0 ].mem , NULL , & subscribers [0 ]);
@@ -108,7 +118,8 @@ void rmw_uxrce_init_subscriber_memory(struct rmw_uxrce_mempool_t * memory, rmw_u
108118
109119void rmw_uxrce_init_nodes_memory (struct rmw_uxrce_mempool_t * memory , rmw_uxrce_node_t * nodes , size_t size )
110120{
111- if (size > 0 ) {
121+ if (size > 0 && !node_memory_init ) {
122+ node_memory_init = true;
112123 link_prev (NULL , & nodes [0 ].mem , NULL );
113124 size > 1 ? link_next (& nodes [0 ].mem , & nodes [1 ].mem , & nodes [0 ]) : link_next (& nodes [0 ].mem , NULL ,
114125 & nodes [0 ]);
@@ -122,7 +133,8 @@ void rmw_uxrce_init_nodes_memory(struct rmw_uxrce_mempool_t * memory, rmw_uxrce_
122133
123134void rmw_uxrce_init_sessions_memory (struct rmw_uxrce_mempool_t * memory , rmw_context_impl_t * sessions , size_t size )
124135{
125- if (size > 0 ) {
136+ if (size > 0 && !session_memory_init ) {
137+ session_memory_init = true;
126138 link_prev (NULL , & sessions [0 ].mem , NULL );
127139 size > 1 ? link_next (& sessions [0 ].mem , & sessions [1 ].mem , & sessions [0 ]) : link_next (& sessions [0 ].mem , NULL ,
128140 & sessions [0 ]);
0 commit comments