| 2192 | } |
| 2193 | |
| 2194 | static void runtime_service_destroy_unstarted(cbm_daemon_runtime_service_t *service) { |
| 2195 | if (!service) { |
| 2196 | return; |
| 2197 | } |
| 2198 | cbm_daemon_ipc_listener_close(service->listener); |
| 2199 | cbm_daemon_coordinator_free(service->coordinator); |
| 2200 | (void)runtime_process_image_reference_release(&service->active_image); |
| 2201 | free(service->conflict_log_path); |
| 2202 | for (size_t i = 0; i < service->worker_mutexes_initialized; i++) { |
| 2203 | cbm_mutex_destroy(&service->workers[i].send_mutex); |
| 2204 | } |
| 2205 | free(service->workers); |
| 2206 | cbm_mutex_destroy(&service->mutex); |
| 2207 | free(service); |
| 2208 | } |
| 2209 | |
| 2210 | cbm_daemon_runtime_service_t *cbm_daemon_runtime_service_start_reserved( |
| 2211 | const cbm_daemon_runtime_service_config_t *config, |
no test coverage detected