@@ -45,7 +45,7 @@ static void environment_init_threaded(environment_t* env, int num_workers) {
4545#if !defined(LF_SINGLE_THREADED )
4646 env -> num_workers = num_workers ;
4747 env -> thread_ids = (lf_thread_t * )calloc (num_workers , sizeof (lf_thread_t ));
48- lf_assert (env -> thread_ids != NULL , "Out of memory" );
48+ LF_ASSERT (env -> thread_ids , "Out of memory" );
4949 env -> barrier .requestors = 0 ;
5050 env -> barrier .horizon = FOREVER_TAG ;
5151
@@ -84,15 +84,19 @@ static void environment_init_modes(environment_t* env, int num_modes, int num_st
8484#ifdef MODAL_REACTORS
8585 if (num_modes > 0 ) {
8686 mode_environment_t * modes = (mode_environment_t * ) calloc (1 , sizeof (mode_environment_t ));
87- lf_assert (modes != NULL , "Out of memory" );
87+ LF_ASSERT (modes , "Out of memory" );
8888 modes -> modal_reactor_states = (reactor_mode_state_t * * ) calloc (num_modes , sizeof (reactor_mode_state_t * ));
89- lf_assert (modes -> modal_reactor_states != NULL , "Out of memory" );
89+ LF_ASSERT (modes -> modal_reactor_states , "Out of memory" );
9090 modes -> modal_reactor_states_size = num_modes ;
9191 modes -> triggered_reactions_request = 0 ;
9292
93- modes -> state_resets = (mode_state_variable_reset_data_t * ) calloc (num_state_resets , sizeof (mode_state_variable_reset_data_t ));
94- lf_assert (modes -> state_resets != NULL , "Out of memory" );
9593 modes -> state_resets_size = num_state_resets ;
94+ if (modes -> state_resets_size > 0 ) {
95+ modes -> state_resets = (mode_state_variable_reset_data_t * ) calloc (modes -> state_resets_size , sizeof (mode_state_variable_reset_data_t ));
96+ LF_ASSERT (modes -> state_resets , "Out of memory" );
97+ } else {
98+ modes -> state_resets = NULL ;
99+ }
96100
97101 env -> modes = modes ;
98102
@@ -107,9 +111,13 @@ static void environment_init_modes(environment_t* env, int num_modes, int num_st
107111 */
108112static void environment_init_federated (environment_t * env , int num_is_present_fields ) {
109113#ifdef FEDERATED_DECENTRALIZED
110- env -> _lf_intended_tag_fields = (tag_t * * ) calloc (num_is_present_fields , sizeof (tag_t * ));
111- lf_assert (env -> _lf_intended_tag_fields != NULL , "Out of memory" );
112- env -> _lf_intended_tag_fields_size = num_is_present_fields ;
114+ if (num_is_present_fields > 0 ) {
115+ env -> _lf_intended_tag_fields = (tag_t * * ) calloc (num_is_present_fields , sizeof (tag_t * ));
116+ LF_ASSERT (env -> _lf_intended_tag_fields , "Out of memory" );
117+ env -> _lf_intended_tag_fields_size = num_is_present_fields ;
118+ } else {
119+ env -> _lf_intended_tag_fields_size = NULL ;
120+ }
113121#endif
114122}
115123
@@ -155,6 +163,7 @@ static void environment_free_federated(environment_t* env) {
155163}
156164
157165void environment_free (environment_t * env ) {
166+ free (env -> name );
158167 free (env -> timer_triggers );
159168 free (env -> startup_reactions );
160169 free (env -> shutdown_reactions );
@@ -175,6 +184,7 @@ void environment_free(environment_t* env) {
175184
176185int environment_init (
177186 environment_t * env ,
187+ const char * name ,
178188 int id ,
179189 int num_workers ,
180190 int num_timers ,
@@ -187,33 +197,57 @@ int environment_init(
187197 const char * trace_file_name
188198) {
189199
200+ env -> name = malloc (strlen (name ) + 1 ); // +1 for the null terminator
201+ LF_ASSERT (env -> name , "Out of memory" );
202+ strcpy (env -> name , name );
203+
190204 env -> id = id ;
191205 env -> stop_tag = FOREVER_TAG ;
192206
193207 env -> timer_triggers_size = num_timers ;
194- env -> timer_triggers = (trigger_t * * ) calloc (num_timers , sizeof (trigger_t ));
195- lf_assert (env -> timer_triggers != NULL , "Out of memory" );
208+ if (env -> timer_triggers_size > 0 ) {
209+ env -> timer_triggers = (trigger_t * * ) calloc (num_timers , sizeof (trigger_t ));
210+ LF_ASSERT (env -> timer_triggers , "Out of memory" );
211+ } else {
212+ env -> timer_triggers = NULL ;
213+ }
196214
197215 env -> startup_reactions_size = num_startup_reactions ;
198- env -> startup_reactions = (reaction_t * * ) calloc (num_startup_reactions , sizeof (reaction_t ));
199- lf_assert (env -> startup_reactions != NULL , "Out of memory" );
216+ if (env -> startup_reactions_size > 0 ) {
217+ env -> startup_reactions = (reaction_t * * ) calloc (num_startup_reactions , sizeof (reaction_t ));
218+ LF_ASSERT (env -> startup_reactions , "Out of memory" );
219+ } else {
220+ env -> startup_reactions = NULL ;
221+ }
200222
201223 env -> shutdown_reactions_size = num_shutdown_reactions ;
202- env -> shutdown_reactions = (reaction_t * * ) calloc (num_shutdown_reactions , sizeof (reaction_t ));
203- lf_assert (env -> shutdown_reactions != NULL , "Out of memory" );
224+ if (env -> shutdown_reactions_size > 0 ) {
225+ env -> shutdown_reactions = (reaction_t * * ) calloc (num_shutdown_reactions , sizeof (reaction_t ));
226+ LF_ASSERT (env -> shutdown_reactions , "Out of memory" );
227+ } else {
228+ env -> shutdown_reactions = NULL ;
229+ }
204230
205231 env -> reset_reactions_size = num_reset_reactions ;
206- env -> reset_reactions = (reaction_t * * ) calloc (num_reset_reactions , sizeof (reaction_t ));
207- lf_assert (env -> reset_reactions != NULL , "Out of memory" );
232+ if (env -> reset_reactions_size > 0 ) {
233+ env -> reset_reactions = (reaction_t * * ) calloc (num_reset_reactions , sizeof (reaction_t ));
234+ LF_ASSERT (env -> reset_reactions , "Out of memory" );
235+ } else {
236+ env -> reset_reactions = NULL ;
237+ }
208238
209239 env -> is_present_fields_size = num_is_present_fields ;
210240 env -> is_present_fields_abbreviated_size = 0 ;
211241
212- env -> is_present_fields = (bool * * )calloc (num_is_present_fields , sizeof (bool * ));
213- lf_assert (env -> is_present_fields != NULL , "Out of memory" );
214-
215- env -> is_present_fields_abbreviated = (bool * * )calloc (num_is_present_fields , sizeof (bool * ));
216- lf_assert (env -> is_present_fields_abbreviated != NULL , "Out of memory" );
242+ if (env -> is_present_fields_size > 0 ) {
243+ env -> is_present_fields = (bool * * )calloc (num_is_present_fields , sizeof (bool * ));
244+ LF_ASSERT (env -> is_present_fields , "Out of memory" );
245+ env -> is_present_fields_abbreviated = (bool * * )calloc (num_is_present_fields , sizeof (bool * ));
246+ LF_ASSERT (env -> is_present_fields_abbreviated , "Out of memory" );
247+ } else {
248+ env -> is_present_fields = NULL ;
249+ env -> is_present_fields_abbreviated = NULL ;
250+ }
217251
218252 env -> _lf_handle = 1 ;
219253
0 commit comments