| 2161 | } |
| 2162 | |
| 2163 | static void runtime_service_destroy_unstarted(cbm_daemon_runtime_service_t *service) { |
| 2164 | if (!service) { |
| 2165 | return; |
| 2166 | } |
| 2167 | cbm_daemon_ipc_listener_close(service->listener); |
| 2168 | cbm_daemon_coordinator_free(service->coordinator); |
| 2169 | (void)runtime_process_image_reference_release(&service->active_image); |
| 2170 | free(service->conflict_log_path); |
| 2171 | for (size_t i = 0; i < service->worker_mutexes_initialized; i++) { |
| 2172 | cbm_mutex_destroy(&service->workers[i].send_mutex); |
| 2173 | } |
| 2174 | free(service->workers); |
| 2175 | cbm_mutex_destroy(&service->mutex); |
| 2176 | free(service); |
| 2177 | } |
| 2178 | |
| 2179 | cbm_daemon_runtime_service_t *cbm_daemon_runtime_service_start_reserved( |
| 2180 | const cbm_daemon_runtime_service_config_t *config, |
no test coverage detected