This is an automated email from the ASF dual-hosted git repository. pnoltes pushed a commit to branch feature/674-improve-properties in repository https://gitbox.apache.org/repos/asf/celix.git
commit 82246c13e2cc6c956aa4414df83b66faf9a3624d Author: Pepijn Noltes <[email protected]> AuthorDate: Mon Jan 22 19:27:55 2024 +0100 Improve references handling in rsa_shm_impl.c --- .../remote_service_admin_shm_v2/rsa_shm/src/rsa_shm_impl.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/bundles/remote_services/remote_service_admin_shm_v2/rsa_shm/src/rsa_shm_impl.c b/bundles/remote_services/remote_service_admin_shm_v2/rsa_shm/src/rsa_shm_impl.c index 1745e3f7..6cd251ec 100755 --- a/bundles/remote_services/remote_service_admin_shm_v2/rsa_shm/src/rsa_shm_impl.c +++ b/bundles/remote_services/remote_service_admin_shm_v2/rsa_shm/src/rsa_shm_impl.c @@ -288,7 +288,7 @@ celix_status_t rsaShm_exportService(rsa_shm_t *admin, char *serviceId, return CELIX_ILLEGAL_ARGUMENT; } - celix_array_list_t *references = NULL; + celix_autoptr(celix_array_list_t) references = NULL; service_reference_pt reference = NULL; char filter[32] = {0};// It is longer than the size of "service.id" + serviceId snprintf(filter, sizeof(filter), "(%s=%s)", (char *) CELIX_FRAMEWORK_SERVICE_ID, serviceId); @@ -298,10 +298,11 @@ celix_status_t rsaShm_exportService(rsa_shm_t *admin, char *serviceId, return status; } //We get reference with serviceId, so the size of references must be less than or equal to 1. - reference = celix_arrayList_get(references, 0); - celix_arrayList_destroy(references); + if (celix_arrayList_size(references) == 1) { + reference = celix_arrayList_get(references, 0); + } if (reference == NULL) { - celix_logHelper_error(admin->logHelper, "Expect a reference for service id %s.", serviceId); + celix_logHelper_error(admin->logHelper, "Expect a exactly one reference for service id %s. Got %i", serviceId, celix_arrayList_size(references)); return CELIX_ILLEGAL_STATE; } celix_auto(celix_service_ref_guard_t) ref = celix_ServiceRefGuard_init(admin->context, reference);
